+Mon Apr 30 19:58:00 2001 Corinna Vinschen <corinna@vinschen.de>
+
+ * 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.
+
Mon Apr 30 12:35:40 2001 Christopher Faylor <cgf@cygnus.com>
* path.cc (path_conv::check): Don't use path_flags when converting to
#include "winsup.h"
#include <grp.h>
+#include <wininet.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
/* Read /etc/group only once for better performance. This is done
on the first call that needs information from it. */
-#define MAX_DOMAIN_NAME 100
-
static NO_COPY const char *etc_group = "/etc/group";
static struct group *group_buf = NULL; /* group contents in memory */
static int curr_lines = 0;
read_etc_group ()
{
char linebuf [200];
- char group_name [MAX_USER_NAME];
- DWORD group_name_len = MAX_USER_NAME;
+ char group_name [UNLEN + 1];
+ DWORD group_name_len = UNLEN + 1;
strncpy (group_name, "Administrators", sizeof (group_name));
}
else /* /etc/group doesn't exist -- create default one in memory */
{
- char domain_name [MAX_DOMAIN_NAME];
- DWORD domain_name_len = MAX_DOMAIN_NAME;
+ char domain_name [INTERNET_MAX_HOST_NAME_LENGTH + 1];
+ DWORD domain_name_len = INTERNET_MAX_HOST_NAME_LENGTH + 1;
SID_NAME_USE acType;
debug_printf ("Emulating /etc/group");
if (! LookupAccountSidA (NULL ,
#include "sigproc.h"
#include "pinfo.h"
#include "cygheap.h"
+#include "security.h"
#include <sys/termios.h>
/* Read /etc/passwd only once for better performance. This is done
if (mybuf[--len] == '\n')
mybuf[len] = '\0';
- res.pw_name = strlwr (grab_string (&mybuf));
+ res.pw_name = grab_string (&mybuf);
res.pw_passwd = grab_string (&mybuf);
res.pw_uid = grab_int (&mybuf);
res.pw_gid = grab_int (&mybuf);
#include <ctype.h>
#include <wingdi.h>
#include <winuser.h>
+#include <wininet.h>
#include "cygerrno.h"
#include "perprocess.h"
#include "fhandler.h"
*/
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,
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;
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);
return TRUE;
}
+#undef SIDLEN
+#undef DOMLEN
+
int
set_process_privilege (const char *privilege, BOOL enable)
{
}
/* Get SID and name of new owner. */
- char owner[MAX_USER_NAME];
+ char owner[UNLEN + 1];
cygsid owner_sid;
struct passwd *pw = getpwuid (uid);
strcpy (owner, pw ? pw->pw_name : getlogin ());
#define MAX_SID_LEN 40
+#define DEFAULT_UID DOMAIN_USER_RID_ADMIN
+#define DEFAULT_GID DOMAIN_ALIAS_RID_ADMINS
+
class cygsid {
PSID psid;
char sbuf[MAX_SID_LEN];
heap_init ();
/* Allocate memory for the per-user mount table */
- char user_name[MAX_USER_NAME];
- DWORD user_name_len = MAX_USER_NAME;
+ char user_name[UNLEN + 1];
+ DWORD user_name_len = UNLEN + 1;
if (!GetUserName (user_name, &user_name_len))
strcpy (user_name, "unknown");
struct tm _localtime_buf;
/* uinfo.cc */
- char _username[MAX_USER_NAME];
+ char _username[UNLEN + 1];
};
#include <pwd.h>
#include <unistd.h>
#include <winnls.h>
+#include <wininet.h>
#include <utmp.h>
#include <limits.h>
#include <stdlib.h>
struct passwd *
internal_getlogin (cygheap_user &user)
{
- char username[MAX_USER_NAME];
- DWORD username_len = MAX_USER_NAME;
+ char username[UNLEN + 1];
+ DWORD username_len = UNLEN + 1;
struct passwd *pw = NULL;
if (!user.name ())
{
char buf[512];
- sys_wcstombs (buf, wui->wkui1_username, MAX_USER_NAME);
+ sys_wcstombs (buf, wui->wkui1_username, UNLEN + 1);
user.set_name (buf);
- sys_wcstombs (buf, wui->wkui1_logon_server, MAX_HOST_NAME);
+ sys_wcstombs (buf, wui->wkui1_logon_server, INTERNET_MAX_HOST_NAME_LENGTH + 1);
user.set_logsrv (buf);
sys_wcstombs (buf, wui->wkui1_logon_domain,
- MAX_COMPUTERNAME_LENGTH + 1);
+ INTERNET_MAX_HOST_NAME_LENGTH + 1);
user.set_domain (buf);
/* Save values in environment */
if (!strcasematch (user.name (), "SYSTEM")
&& user.domain () && user.logsrv ())
{
LPUSER_INFO_3 ui = NULL;
- WCHAR wbuf[MAX_HOST_NAME + 2];
+ WCHAR wbuf[INTERNET_MAX_HOST_NAME_LENGTH + 2];
strcat (strcpy (buf, "\\\\"), user.logsrv ());
setenv ("USERNAME", user.name (), 1);
setenv ("USERDOMAIN", user.domain (), 1);
/* HOMEDRIVE and HOMEPATH are wrong most of the time, too,
after changing user context! */
- sys_mbstowcs (wbuf, buf, MAX_HOST_NAME + 2);
+ sys_mbstowcs (wbuf, buf, INTERNET_MAX_HOST_NAME_LENGTH + 2);
if (!NetUserGetInfo (NULL, wui->wkui1_username, 3, (LPBYTE *)&ui)
|| !NetUserGetInfo (wbuf,wui->wkui1_username,3,(LPBYTE *)&ui))
{
#ifdef _MT_SAFE
char *this_username=_reent_winsup ()->_username;
#else
- static NO_COPY char this_username[MAX_USER_NAME];
+ static NO_COPY char this_username[UNLEN + 1];
#endif
return strcpy (this_username, cygheap->user.name ());
#define _WINSVC_H
#include <windows.h>
#include <wincrypt.h>
+#include <lmcons.h>
#undef _WINGDI_H
#undef _WINUSER_H
#undef _WINNLS_H
MultiByteToWideChar((current_codepage==ansi_cp?CP_ACP:CP_OEMCP),0,(src),-1,(tgt),(len))
#define TITLESIZE 1024
-#define MAX_USER_NAME 20
-#define DEFAULT_UID 500
-#define DEFAULT_GID 544
-
-#define MAX_HOST_NAME 256
/* status bit manipulation */
#define __ISSETF(what, x, prefix) \