[cvsnt] pserver impersonation with SystemAuth=no - patch
Alexey Panchenko
alexey-panchenko at hotmail.ru
Tue Dec 2 04:15:14 GMT 2003
Hello,
The attached patch was removed from the message in the list, so I
include it in this message body.
Index: win32.c
===================================================================
RCS file: /usr/local/cvs/cvsnt/windows-NT/win32.c,v
retrieving revision 1.72
diff -u -r1.72 win32.c
--- win32.c 24 Mar 2003 21:16:05 -0000 1.72
+++ win32.c 24 Oct 2003 12:11:14 -0000
@@ -369,8 +369,10 @@
static char pdc[1024];
NET_API_STATUS res;
char *ptr;
+ wchar_t *domainName;
// only fetch a domain controller if the machine is a domain member
+ w_pdc[0]=0;
if(isDomainMember())
{
ptr=strchr(name, '\\');
@@ -390,7 +392,10 @@
w_domain[numchars] = 0;
// May fail for workgroup-only NT boxen (Patch from jonathan.gilligan at vanderbilt.edu)
- NetGetAnyDCName(NULL,w_domain,(LPBYTE*)&w_pdc);
+ if (NetGetAnyDCName(NULL,w_domain,(LPBYTE*)&domainName)==NERR_Success) {
+ wcscpy(w_pdc,domainName);
+ NetApiBufferFree(domainName);
+ }
name = ptr+1;
}
else
@@ -398,7 +403,12 @@
if(NetWkstaUserGetInfo(NULL,1,(LPBYTE*)&wk_info)==NERR_Success)
wcscpy(w_pdc,wk_info->wkui1_logon_server);
else
- NetGetAnyDCName(NULL,NULL,(LPBYTE*)&w_pdc);
+ {
+ if (NetGetAnyDCName(NULL,NULL,(LPBYTE*)&domainName)==NERR_Success) {
+ wcscpy(w_pdc,domainName);
+ NetApiBufferFree(domainName);
+ }
+ }
MultiByteToWideChar(CP_ACP,0,name,-1,w_name,UNLEN+1);
}
}
@@ -419,14 +429,9 @@
res=NetUserGetInfo(w_pdc,w_name,1,(BYTE**)&pinfo);
if(res==NERR_UserNotFound)
{
- if(w_pdc)
- NetApiBufferFree(w_pdc);
return NULL;
}
- if(w_pdc)
- WideCharToMultiByte(0,0,w_pdc,-1,pdc,sizeof(pdc),0,0);
-
pw.pw_uid=0;
pw.pw_gid=0;
pw.pw_name=name;
@@ -436,7 +441,13 @@
pw.pw_pdc =w_pdc;
pw.pw_name_t = w_name;
#else
- pw.pw_pdc=w_pdc?pdc:NULL;
+ if(w_pdc[0]) {
+ WideCharToMultiByte(0,0,w_pdc,-1,pdc,sizeof(pdc),0,0);
+ pw.pw_pdc=pdc;
+ }
+ else {
+ pw.pw_pdc=NULL;
+ }
pw.pw_name_t =name;
#endif
@@ -452,8 +463,6 @@
NetApiBufferFree(pinfo);
if(wk_info)
NetApiBufferFree(wk_info);
- else if(w_pdc)
- NetApiBufferFree(w_pdc);
return &pw;
#else // Win95 broken version. Rely on the HOME environment variable...
static struct passwd pw;
--
Best regards,
Alexey mailto:alexey-panchenko at hotmail.ru
More information about the cvsnt
mailing list