mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-28 00:04:30 +02:00
- (dtucker) [session.c openbsd-compat/bsd-cygwin_util.{c,h}] Bug #915: only
copy required environment variables on Cygwin. Patch from vinschen at redhat.com, ok djm@
This commit is contained in:
parent
5a88d00349
commit
14c372d49d
@ -1,3 +1,8 @@
|
|||||||
|
20040830
|
||||||
|
- (dtucker) [session.c openbsd-compat/bsd-cygwin_util.{c,h}] Bug #915: only
|
||||||
|
copy required environment variables on Cygwin. Patch from vinschen at
|
||||||
|
redhat.com, ok djm@
|
||||||
|
|
||||||
20040829
|
20040829
|
||||||
- (dtucker) [openbsd-compat/getrrsetbyname.c] Prevent getrrsetbyname from
|
- (dtucker) [openbsd-compat/getrrsetbyname.c] Prevent getrrsetbyname from
|
||||||
failing with NOMEMORY if no sigs are returned and malloc(0) returns NULL.
|
failing with NOMEMORY if no sigs are returned and malloc(0) returns NULL.
|
||||||
@ -1707,4 +1712,4 @@
|
|||||||
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
||||||
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.3536 2004/08/29 11:43:33 dtucker Exp $
|
$Id: ChangeLog,v 1.3537 2004/08/30 10:42:08 dtucker Exp $
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
|
||||||
RCSID("$Id: bsd-cygwin_util.c,v 1.12 2004/04/18 11:15:45 djm Exp $");
|
RCSID("$Id: bsd-cygwin_util.c,v 1.13 2004/08/30 10:42:08 dtucker Exp $");
|
||||||
|
|
||||||
#ifdef HAVE_CYGWIN
|
#ifdef HAVE_CYGWIN
|
||||||
|
|
||||||
@ -38,6 +38,7 @@ RCSID("$Id: bsd-cygwin_util.c,v 1.12 2004/04/18 11:15:45 djm Exp $");
|
|||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include "xmalloc.h"
|
||||||
#define is_winnt (GetVersion() < 0x80000000)
|
#define is_winnt (GetVersion() < 0x80000000)
|
||||||
|
|
||||||
#define ntsec_on(c) ((c) && strstr((c),"ntsec") && !strstr((c),"nontsec"))
|
#define ntsec_on(c) ((c) && strstr((c),"ntsec") && !strstr((c),"nontsec"))
|
||||||
@ -96,7 +97,6 @@ has_capability(int what)
|
|||||||
*/
|
*/
|
||||||
if (!inited) {
|
if (!inited) {
|
||||||
struct utsname uts;
|
struct utsname uts;
|
||||||
char *c;
|
|
||||||
|
|
||||||
if (!uname(&uts)) {
|
if (!uname(&uts)) {
|
||||||
int major_high = 0, major_low = 0, minor = 0;
|
int major_high = 0, major_low = 0, minor = 0;
|
||||||
@ -236,4 +236,54 @@ register_9x_service(void)
|
|||||||
RegisterServiceProcess(0, 1);
|
RegisterServiceProcess(0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define NL(x) x, (sizeof (x) - 1)
|
||||||
|
#define WENV_SIZ (sizeof (wenv_arr) / sizeof (wenv_arr[0]))
|
||||||
|
|
||||||
|
static struct wenv {
|
||||||
|
const char *name;
|
||||||
|
size_t namelen;
|
||||||
|
} wenv_arr[] = {
|
||||||
|
{ NL("ALLUSERSPROFILE=") },
|
||||||
|
{ NL("COMMONPROGRAMFILES=") },
|
||||||
|
{ NL("COMPUTERNAME=") },
|
||||||
|
{ NL("COMSPEC=") },
|
||||||
|
{ NL("NUMBER_OF_PROCESSORS=") },
|
||||||
|
{ NL("OS=") },
|
||||||
|
{ NL("PATH=") },
|
||||||
|
{ NL("PATHEXT=") },
|
||||||
|
{ NL("PROCESSOR_ARCHITECTURE=") },
|
||||||
|
{ NL("PROCESSOR_IDENTIFIER=") },
|
||||||
|
{ NL("PROCESSOR_LEVEL=") },
|
||||||
|
{ NL("PROCESSOR_REVISION=") },
|
||||||
|
{ NL("PROGRAMFILES=") },
|
||||||
|
{ NL("SYSTEMDRIVE=") },
|
||||||
|
{ NL("SYSTEMROOT=") },
|
||||||
|
{ NL("TMP=") },
|
||||||
|
{ NL("TEMP=") },
|
||||||
|
{ NL("WINDIR=") },
|
||||||
|
};
|
||||||
|
|
||||||
|
char **
|
||||||
|
fetch_windows_environment(void)
|
||||||
|
{
|
||||||
|
char **e, **p;
|
||||||
|
int i, idx = 0;
|
||||||
|
|
||||||
|
p = xmalloc(WENV_SIZ * sizeof(char *));
|
||||||
|
for (e = environ; *e != NULL; ++e) {
|
||||||
|
for (i = 0; i < WENV_SIZ; ++i) {
|
||||||
|
if (!strncmp(*e, wenv_arr[i].name, wenv_arr[i].namelen))
|
||||||
|
p[idx++] = *e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p[idx] = NULL;
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
free_windows_environment(char **p)
|
||||||
|
{
|
||||||
|
xfree(p);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* HAVE_CYGWIN */
|
#endif /* HAVE_CYGWIN */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: bsd-cygwin_util.h,v 1.10 2003/08/07 06:28:16 dtucker Exp $ */
|
/* $Id: bsd-cygwin_util.h,v 1.11 2004/08/30 10:42:08 dtucker Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2001, Corinna Vinschen <vinschen@cygnus.com>
|
* Copyright (c) 2000, 2001, Corinna Vinschen <vinschen@cygnus.com>
|
||||||
@ -46,6 +46,8 @@ int binary_pipe(int fd[2]);
|
|||||||
int check_nt_auth(int, struct passwd *);
|
int check_nt_auth(int, struct passwd *);
|
||||||
int check_ntsec(const char *);
|
int check_ntsec(const char *);
|
||||||
void register_9x_service(void);
|
void register_9x_service(void);
|
||||||
|
char **fetch_windows_environment(void);
|
||||||
|
void free_windows_environment(char **);
|
||||||
|
|
||||||
#define open binary_open
|
#define open binary_open
|
||||||
#define pipe binary_pipe
|
#define pipe binary_pipe
|
||||||
|
@ -979,7 +979,13 @@ do_setup_env(Session *s, const char *shell)
|
|||||||
* The Windows environment contains some setting which are
|
* The Windows environment contains some setting which are
|
||||||
* important for a running system. They must not be dropped.
|
* important for a running system. They must not be dropped.
|
||||||
*/
|
*/
|
||||||
copy_environment(environ, &env, &envsize);
|
{
|
||||||
|
char **p;
|
||||||
|
|
||||||
|
p = fetch_windows_environment();
|
||||||
|
copy_environment(p, &env, &envsize);
|
||||||
|
free_windows_environment(p);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef GSSAPI
|
#ifdef GSSAPI
|
||||||
|
Loading…
x
Reference in New Issue
Block a user