diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-04-30 18:21:48 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-04-30 18:21:48 +0000 |
commit | 17db110558a7f06c5c7fec8f998449c1e8a9f598 (patch) | |
tree | d97e40d63ebb7e4dcf4ae1ace8425e272c726101 /winsup/cygwin/sec_helper.cc | |
parent | c0a45b92ccab6ddab9482d436a1ebfe3af387fed (diff) | |
download | cygnal-17db110558a7f06c5c7fec8f998449c1e8a9f598.tar.gz cygnal-17db110558a7f06c5c7fec8f998449c1e8a9f598.tar.bz2 cygnal-17db110558a7f06c5c7fec8f998449c1e8a9f598.zip |
* grp.cc: Eliminate MAX_DOMAIN_NAME define.
(read_etc_group): Substitute MAX_DOMAIN_NAME by
INTERNET_MAX_HOST_NAME_LENGTH.
* passwd.cc (parse_pwd): Don't force pw_name to be lower case.
* sec_helper.cc: Substitute MAX_USER_NAME by UNLEN,
MAX_COMPUTERNAME_LENGTH by INTERNET_MAX_HOST_NAME_LENGTH throughout.
(lookup_name): Slight cleanup.
* security.cc (alloc_sd): Substitute MAX_USER_NAME by UNLEN.
* security.h: Define DEFAULT_UID as DOMAIN_USER_RID_ADMIN and
DEFAULT_GID as DOMAIN_ALIAS_RID_ADMINS.
* shared.cc (memory_init): Substitute MAX_USER_NAME by UNLEN.
* thread.h: Ditto.
* uinfo.cc (internal_getlogin): Substitute MAX_USER_NAME by UNLEN.
Substitute MAX_COMPUTERNAME_LENGTH and MAX_HOST_NAME by
INTERNET_MAX_HOST_NAME_LENGTH.
* winsup.h: Include lmcons.h. Eliminate MAX_USER_NAME and
MAX_HOST_NAME. Move DEFAULT_UID and DEFAULT_GID to security.h.
Diffstat (limited to 'winsup/cygwin/sec_helper.cc')
-rw-r--r-- | winsup/cygwin/sec_helper.cc | 51 |
1 files changed, 21 insertions, 30 deletions
diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc index d36064193..e3eaa0938 100644 --- a/winsup/cygwin/sec_helper.cc +++ b/winsup/cygwin/sec_helper.cc @@ -23,6 +23,7 @@ details. */ #include <ctype.h> #include <wingdi.h> #include <winuser.h> +#include <wininet.h> #include "cygerrno.h" #include "perprocess.h" #include "fhandler.h" @@ -221,10 +222,10 @@ get_id_from_sid (PSID psid, BOOL search_grp, int *type) */ if (id == -1 || type) { - char account[MAX_USER_NAME]; - char domain[MAX_COMPUTERNAME_LENGTH+1]; - DWORD acc_len = MAX_USER_NAME; - DWORD dom_len = MAX_COMPUTERNAME_LENGTH+1; + char account[UNLEN + 1]; + char domain[INTERNET_MAX_HOST_NAME_LENGTH + 1]; + DWORD acc_len = UNLEN + 1; + DWORD dom_len = INTERNET_MAX_HOST_NAME_LENGTH + 1; SID_NAME_USE acc_type; if (!LookupAccountSid (NULL, psid, account, &acc_len, @@ -299,13 +300,16 @@ is_grp_member (uid_t uid, gid_t gid) return grp_member; } +#define SIDLEN (sidlen = MAX_SID_LEN, &sidlen) +#define DOMLEN (domlen = INTERNET_MAX_HOST_NAME_LENGTH, &domlen) + BOOL lookup_name (const char *name, const char *logsrv, PSID ret_sid) { cygsid sid; DWORD sidlen; - char domuser[MAX_COMPUTERNAME_LENGTH+MAX_USER_NAME+1]; - char dom[MAX_COMPUTERNAME_LENGTH+1]; + char domuser[INTERNET_MAX_HOST_NAME_LENGTH + UNLEN + 2]; + char dom[INTERNET_MAX_HOST_NAME_LENGTH + 1]; DWORD domlen; SID_NAME_USE acc_type; @@ -317,51 +321,35 @@ lookup_name (const char *name, const char *logsrv, PSID ret_sid) if (cygheap->user.domain ()) { strcat (strcat (strcpy (domuser, cygheap->user.domain ()), "\\"), name); - if (LookupAccountName (NULL, domuser, - sid, (sidlen = MAX_SID_LEN, &sidlen), - dom, (domlen = MAX_COMPUTERNAME_LENGTH, &domlen), - &acc_type) + if (LookupAccountName (NULL, domuser, sid, SIDLEN, dom, DOMLEN, &acc_type) && legal_sid_type (acc_type)) goto got_it; if (logsrv && *logsrv - && LookupAccountName (logsrv, domuser, - sid, (sidlen = MAX_SID_LEN, &sidlen), - dom, (domlen = MAX_COMPUTERNAME_LENGTH,&domlen), - &acc_type) + && LookupAccountName (logsrv, domuser, sid, SIDLEN, + dom, DOMLEN, &acc_type) && legal_sid_type (acc_type)) goto got_it; } if (logsrv && *logsrv) { - if (LookupAccountName (logsrv, name, - sid, (sidlen = MAX_SID_LEN, &sidlen), - dom, (domlen = MAX_COMPUTERNAME_LENGTH, &domlen), - &acc_type) + if (LookupAccountName (logsrv, name, sid, SIDLEN, dom, DOMLEN, &acc_type) && legal_sid_type (acc_type)) goto got_it; if (acc_type == SidTypeDomain) { strcat (strcat (strcpy (domuser, dom), "\\"), name); - if (LookupAccountName (logsrv, domuser, - sid,(sidlen = MAX_SID_LEN, &sidlen), - dom,(domlen = MAX_COMPUTERNAME_LENGTH,&domlen), - &acc_type)) + if (LookupAccountName (logsrv, domuser, sid, SIDLEN, + dom, DOMLEN, &acc_type)) goto got_it; } } - if (LookupAccountName (NULL, name, - sid, (sidlen = MAX_SID_LEN, &sidlen), - dom, (domlen = 100, &domlen), - &acc_type) + if (LookupAccountName (NULL, name, sid, SIDLEN, dom, DOMLEN, &acc_type) && legal_sid_type (acc_type)) goto got_it; if (acc_type == SidTypeDomain) { strcat (strcat (strcpy (domuser, dom), "\\"), name); - if (LookupAccountName (NULL, domuser, - sid, (sidlen = MAX_SID_LEN, &sidlen), - dom, (domlen = MAX_COMPUTERNAME_LENGTH, &domlen), - &acc_type)) + if (LookupAccountName (NULL, domuser, sid, SIDLEN, dom, DOMLEN,&acc_type)) goto got_it; } debug_printf ("LookupAccountName(%s) %E", name); @@ -378,6 +366,9 @@ got_it: return TRUE; } +#undef SIDLEN +#undef DOMLEN + int set_process_privilege (const char *privilege, BOOL enable) { |