Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-06-30 02:05:30 +0400
committerChristopher Faylor <me@cgf.cx>2002-06-30 02:05:30 +0400
commitefc1575ecd6c005883f5e4bb292a6a33a4c17b2a (patch)
tree41df41dd3c8695122f44a4d06bf66fd50a2867ed
parent638180f51f6db54d42f48b4e5daabd159d71484a (diff)
* 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.
-rw-r--r--winsup/cygwin/ChangeLog10
-rw-r--r--winsup/cygwin/autoload.cc2
-rw-r--r--winsup/cygwin/cygheap.h9
-rw-r--r--winsup/cygwin/uinfo.cc9
4 files changed, 23 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f314e864f..87ac1a3fe 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,15 @@
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>
+
* environ.cc (spenv::retrieve): Detect return of env_dontadd from
cygheap_user methods.
(build_env): Avoid incrementing environment pointer if not actually
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index d910b43ed..d37b19975 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -371,7 +371,7 @@ LoadDLLfunc (SetSecurityDescriptorOwner, 12, advapi32)
LoadDLLfunc (SetTokenInformation, 16, advapi32)
LoadDLLfunc (NetApiBufferFree, 4, netapi32)
-LoadDLLfunc (NetGetDCName, 12, netapi32)
+LoadDLLfuncEx (NetGetDCName, 12, netapi32, 1)
LoadDLLfunc (NetLocalGroupEnum, 28, netapi32)
LoadDLLfunc (NetLocalGroupGetMembers, 32, netapi32)
LoadDLLfunc (NetUserGetGroups, 28, netapi32)
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index 63585d91a..d2e06bfef 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -144,15 +144,18 @@ public:
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 ()
{
- 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 ()
{
- 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_orig_sid ();
diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
index ae500049e..2b506bde9 100644
--- a/winsup/cygwin/uinfo.cc
+++ b/winsup/cygwin/uinfo.cc
@@ -319,12 +319,14 @@ cygheap_user::env_logsrv (const char *name, size_t namelen)
if (test_uid (plogsrv, name, namelen))
return plogsrv;
- if (!domain () || strcasematch (winname (), "SYSTEM"))
+ const char *mydomain = domain ();
+ const char *myname = winname ();
+ if (!mydomain || strcasematch (myname, "SYSTEM"))
return almost_null;
char logsrv[INTERNET_MAX_HOST_NAME_LENGTH + 3];
cfree_and_set (plogsrv, almost_null);
- if (get_logon_server (domain (), logsrv, NULL))
+ if (get_logon_server (mydomain, logsrv, NULL))
plogsrv = cstrdup (logsrv);
return plogsrv;
}
@@ -363,7 +365,8 @@ cygheap_user::env_userprofile (const char *name, size_t namelen)
char userprofile_env_buf[MAX_PATH + 1];
cfree_and_set (puserprof, almost_null);
/* 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))
puserprof = cstrdup (userprofile_env_buf);