* autoload.cc (NetGetDCName): Change to make this an optional load function.

* cygheap.h (cygheap_user::logsrv): Return NULL when operation fails.
(cygheap_user::winname): Ditto.
(cygheap_user::domain): Ditto.
* uinfo.cc (cygheap_user::env_logsrv): Save results in temp variable.
(cygheap_user::env_userprofile): Ditto.
This commit is contained in:
Christopher Faylor 2002-06-29 22:05:30 +00:00
parent 638180f51f
commit efc1575ecd
4 changed files with 23 additions and 7 deletions

View File

@ -1,3 +1,13 @@
2002-06-29 Christopher Faylor <cgf@redhat.com>
* autoload.cc (NetGetDCName): Change to make this an optional load
function.
* cygheap.h (cygheap_user::logsrv): Return NULL when operation fails.
(cygheap_user::winname): Ditto.
(cygheap_user::domain): Ditto.
* uinfo.cc (cygheap_user::env_logsrv): Save results in temp variable.
(cygheap_user::env_userprofile): Ditto.
2002-06-29 Christopher Faylor <cgf@redhat.com> 2002-06-29 Christopher Faylor <cgf@redhat.com>
* environ.cc (spenv::retrieve): Detect return of env_dontadd from * environ.cc (spenv::retrieve): Detect return of env_dontadd from

View File

@ -371,7 +371,7 @@ LoadDLLfunc (SetSecurityDescriptorOwner, 12, advapi32)
LoadDLLfunc (SetTokenInformation, 16, advapi32) LoadDLLfunc (SetTokenInformation, 16, advapi32)
LoadDLLfunc (NetApiBufferFree, 4, netapi32) LoadDLLfunc (NetApiBufferFree, 4, netapi32)
LoadDLLfunc (NetGetDCName, 12, netapi32) LoadDLLfuncEx (NetGetDCName, 12, netapi32, 1)
LoadDLLfunc (NetLocalGroupEnum, 28, netapi32) LoadDLLfunc (NetLocalGroupEnum, 28, netapi32)
LoadDLLfunc (NetLocalGroupGetMembers, 32, netapi32) LoadDLLfunc (NetLocalGroupGetMembers, 32, netapi32)
LoadDLLfunc (NetUserGetGroups, 28, netapi32) LoadDLLfunc (NetUserGetGroups, 28, netapi32)

View File

@ -144,15 +144,18 @@ public:
const char *logsrv () const char *logsrv ()
{ {
return env_logsrv ("LOGONSERVER=", sizeof ("LOGONSERVER=") - 1); const char *p = env_logsrv ("LOGONSERVER=", sizeof ("LOGONSERVER=") - 1);
return (p == almost_null) ? NULL : p;
} }
const char *winname () const char *winname ()
{ {
return env_name ("USERNAME=", sizeof ("USERNAME=") - 1); const char *p = env_name ("USERNAME=", sizeof ("USERNAME=") - 1);
return (p == almost_null) ? NULL : p;
} }
const char *domain () const char *domain ()
{ {
return env_domain ("USERDOMAIN=", sizeof ("USERDOMAIN=") - 1); const char *p = env_domain ("USERDOMAIN=", sizeof ("USERDOMAIN=") - 1);
return (p == almost_null) ? NULL : p;
} }
BOOL set_sid (PSID new_sid); BOOL set_sid (PSID new_sid);
BOOL set_orig_sid (); BOOL set_orig_sid ();

View File

@ -319,12 +319,14 @@ cygheap_user::env_logsrv (const char *name, size_t namelen)
if (test_uid (plogsrv, name, namelen)) if (test_uid (plogsrv, name, namelen))
return plogsrv; return plogsrv;
if (!domain () || strcasematch (winname (), "SYSTEM")) const char *mydomain = domain ();
const char *myname = winname ();
if (!mydomain || strcasematch (myname, "SYSTEM"))
return almost_null; return almost_null;
char logsrv[INTERNET_MAX_HOST_NAME_LENGTH + 3]; char logsrv[INTERNET_MAX_HOST_NAME_LENGTH + 3];
cfree_and_set (plogsrv, almost_null); cfree_and_set (plogsrv, almost_null);
if (get_logon_server (domain (), logsrv, NULL)) if (get_logon_server (mydomain, logsrv, NULL))
plogsrv = cstrdup (logsrv); plogsrv = cstrdup (logsrv);
return plogsrv; return plogsrv;
} }
@ -363,7 +365,8 @@ cygheap_user::env_userprofile (const char *name, size_t namelen)
char userprofile_env_buf[MAX_PATH + 1]; char userprofile_env_buf[MAX_PATH + 1];
cfree_and_set (puserprof, almost_null); cfree_and_set (puserprof, almost_null);
/* FIXME: Should this just be setting a puserprofile like everything else? */ /* FIXME: Should this just be setting a puserprofile like everything else? */
if (!strcasematch (winname (), "SYSTEM") const char *myname = winname ();
if (myname && strcasematch (myname, "SYSTEM")
&& get_registry_hive_path (sid (), userprofile_env_buf)) && get_registry_hive_path (sid (), userprofile_env_buf))
puserprof = cstrdup (userprofile_env_buf); puserprof = cstrdup (userprofile_env_buf);