* autoload.cc: Make autoloaded ntdll function non-optional. Ditto for
secur32 functions, except for LsaRegisterLogonProcess. Change return value to ERROR_PROC_NOT_FOUND. Explain why. * sec_auth.cc (lsaauth): Handle ERROR_PROC_NOT_FOUND from call to LsaRegisterLogonProcess when generating the errno value.
This commit is contained in:
parent
830f7b740b
commit
e80f6dc8f0
|
@ -1,3 +1,11 @@
|
||||||
|
2011-02-26 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* autoload.cc: Make autoloaded ntdll function non-optional. Ditto for
|
||||||
|
secur32 functions, except for LsaRegisterLogonProcess. Change return
|
||||||
|
value to ERROR_PROC_NOT_FOUND. Explain why.
|
||||||
|
* sec_auth.cc (lsaauth): Handle ERROR_PROC_NOT_FOUND from call to
|
||||||
|
LsaRegisterLogonProcess when generating the errno value.
|
||||||
|
|
||||||
2011-02-22 Corinna Vinschen <corinna@vinschen.de>
|
2011-02-22 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* dcrt0.cc: Fix copyright dates.
|
* dcrt0.cc: Fix copyright dates.
|
||||||
|
|
|
@ -369,14 +369,11 @@ LoadDLLfunc (NetUserGetGroups, 28, netapi32)
|
||||||
LoadDLLfunc (NetUserGetInfo, 16, netapi32)
|
LoadDLLfunc (NetUserGetInfo, 16, netapi32)
|
||||||
LoadDLLfunc (NetUserGetLocalGroups, 32, netapi32)
|
LoadDLLfunc (NetUserGetLocalGroups, 32, netapi32)
|
||||||
|
|
||||||
/* 0xc000007a == STATUS_PROCEDURE_NOT_FOUND */
|
LoadDLLfunc (NtCommitTransaction, 8, ntdll)
|
||||||
#define LoadDLLfuncNt(name, n, dllname) \
|
LoadDLLfunc (NtCreateTransaction, 40, ntdll)
|
||||||
LoadDLLfuncEx2(name, n, dllname, 1, 0xc000007a)
|
LoadDLLfunc (NtRollbackTransaction, 8, ntdll)
|
||||||
LoadDLLfuncNt (NtCommitTransaction, 8, ntdll)
|
LoadDLLfunc (RtlGetCurrentTransaction, 0, ntdll)
|
||||||
LoadDLLfuncNt (NtCreateTransaction, 40, ntdll)
|
LoadDLLfunc (RtlSetCurrentTransaction, 4, ntdll)
|
||||||
LoadDLLfuncNt (NtRollbackTransaction, 8, ntdll)
|
|
||||||
LoadDLLfuncNt (RtlGetCurrentTransaction, 0, ntdll)
|
|
||||||
LoadDLLfuncNt (RtlSetCurrentTransaction, 4, ntdll)
|
|
||||||
|
|
||||||
LoadDLLfunc (CoTaskMemFree, 4, ole32)
|
LoadDLLfunc (CoTaskMemFree, 4, ole32)
|
||||||
|
|
||||||
|
@ -389,12 +386,16 @@ LoadDLLfuncEx (QueryWorkingSet, 12, psapi, 1)
|
||||||
LoadDLLfunc (UuidCreate, 4, rpcrt4)
|
LoadDLLfunc (UuidCreate, 4, rpcrt4)
|
||||||
LoadDLLfuncEx (UuidCreateSequential, 4, rpcrt4, 1)
|
LoadDLLfuncEx (UuidCreateSequential, 4, rpcrt4, 1)
|
||||||
|
|
||||||
/* secur32 functions return NTSTATUS values. */
|
LoadDLLfunc (LsaDeregisterLogonProcess, 4, secur32)
|
||||||
LoadDLLfuncNt (LsaDeregisterLogonProcess, 4, secur32)
|
LoadDLLfunc (LsaFreeReturnBuffer, 4, secur32)
|
||||||
LoadDLLfuncNt (LsaFreeReturnBuffer, 4, secur32)
|
LoadDLLfunc (LsaLogonUser, 56, secur32)
|
||||||
LoadDLLfuncNt (LsaLogonUser, 56, secur32)
|
LoadDLLfunc (LsaLookupAuthenticationPackage, 12, secur32)
|
||||||
LoadDLLfuncNt (LsaLookupAuthenticationPackage, 12, secur32)
|
/* secur32 functions return NTSTATUS values. However, the error code must
|
||||||
LoadDLLfuncNt (LsaRegisterLogonProcess, 12, secur32)
|
fit in a single byte, see LoadDLLprime.
|
||||||
|
The calling function, lsaauth(), checks for STATUS_SUCCESS (0), so we
|
||||||
|
simply return some arbitrary non-0 value (127 == ERROR_PROC_NOT_FOUND)
|
||||||
|
from here, if the function can't be loaded. */
|
||||||
|
LoadDLLfuncEx2 (LsaRegisterLogonProcess, 12, secur32, 1, 127)
|
||||||
|
|
||||||
LoadDLLfunc (SHGetDesktopFolder, 4, shell32)
|
LoadDLLfunc (SHGetDesktopFolder, 4, shell32)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* sec_auth.cc: NT authentication functions
|
/* sec_auth.cc: NT authentication functions
|
||||||
|
|
||||||
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
2006, 2007, 2008, 2009, 2010 Red Hat, Inc.
|
2006, 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -967,7 +967,8 @@ lsaauth (cygsid &usersid, user_groups &new_groups, struct passwd *pw)
|
||||||
if (ret != STATUS_SUCCESS)
|
if (ret != STATUS_SUCCESS)
|
||||||
{
|
{
|
||||||
debug_printf ("LsaRegisterLogonProcess: %p", ret);
|
debug_printf ("LsaRegisterLogonProcess: %p", ret);
|
||||||
__seterrno_from_win_error (LsaNtStatusToWinError (ret));
|
__seterrno_from_win_error (ret == ERROR_PROC_NOT_FOUND
|
||||||
|
? ret : LsaNtStatusToWinError (ret));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
else if (GetLastError () == ERROR_PROC_NOT_FOUND)
|
else if (GetLastError () == ERROR_PROC_NOT_FOUND)
|
||||||
|
|
Loading…
Reference in New Issue