diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-07-13 13:14:41 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-07-13 13:14:41 +0000 |
commit | 5a0c7f1df9585c63a5438a07480afccb661a706d (patch) | |
tree | b234ae65bce4de3ee98d44802948206a67c615ac /winsup/lsaauth/cyglsa.c | |
parent | 25dab6dc60abf8e526d47ea9770de2e655868d60 (diff) | |
download | cygnal-5a0c7f1df9585c63a5438a07480afccb661a706d.tar.gz cygnal-5a0c7f1df9585c63a5438a07480afccb661a706d.tar.bz2 cygnal-5a0c7f1df9585c63a5438a07480afccb661a706d.zip |
* cyglsa.c: Don't include ntddk.h.
(RtlInitEmptyUnicodeString): Use Visual-C compatible "__inline" instead
of "inline".
(uni_alloc): Change second argument to USHORT.
(printf): Move definition of ap to make Visual-C++ happy.
(LsaApLogonUserEx): Compute size of datastructure returned to
LSA on 64 bit systems correctly to avoid heap corruption.
* cyglsa64.dll: Regenerate.
* make-64bit-version-with-visual-c.bat: Accommodate newer Microsoft
toolchains. Add more comment.
* mslsa.def: Export LsaApLogonUserEx instead of LsaApLogonUser.
Diffstat (limited to 'winsup/lsaauth/cyglsa.c')
-rw-r--r-- | winsup/lsaauth/cyglsa.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/winsup/lsaauth/cyglsa.c b/winsup/lsaauth/cyglsa.c index acd271f93..582e226e9 100644 --- a/winsup/lsaauth/cyglsa.c +++ b/winsup/lsaauth/cyglsa.c @@ -19,7 +19,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include <lm.h> #include <iptypes.h> #include <ntsecapi.h> -#include <ntddk.h> #include "../cygwin/cyglsa.h" #include "../cygwin/include/cygwin/version.h" @@ -41,9 +40,8 @@ DllMain (HINSTANCE inst, DWORD reason, LPVOID res) } #ifndef RtlInitEmptyUnicodeString -inline -VOID NTAPI RtlInitEmptyUnicodeString(PUNICODE_STRING dest, PCWSTR buf, - USHORT len) +__inline VOID NTAPI +RtlInitEmptyUnicodeString(PUNICODE_STRING dest, PCWSTR buf, USHORT len) { dest->Length = 0; dest->MaximumLength = len; @@ -52,7 +50,7 @@ VOID NTAPI RtlInitEmptyUnicodeString(PUNICODE_STRING dest, PCWSTR buf, #endif static PUNICODE_STRING -uni_alloc (PWCHAR src, DWORD len) +uni_alloc (PWCHAR src, USHORT len) { PUNICODE_STRING tgt; @@ -80,10 +78,10 @@ printf (const char *format, ...) char buf[256]; DWORD wr; int ret; + va_list ap; if (fh == INVALID_HANDLE_VALUE) return 0; - va_list ap; va_start (ap, format); ret = _vsnprintf (buf, 256, format, ap); @@ -471,14 +469,17 @@ LsaApLogonUserEx (PLSA_CLIENT_REQUEST request, SECURITY_LOGON_TYPE logon_type, base = (LONG_PTR) &authinf->inf; newsize = authinf->inf_size; - newsize += sizeof (PSID) - sizeof (OFFSET); /* User SID */ + newsize += sizeof (TOKEN_USER) - sizeof (CYG_TOKEN_USER); /* User SID */ newsize += sizeof (PTOKEN_GROUPS) - sizeof (OFFSET); /* Groups */ src_grps = (PCYG_TOKEN_GROUPS) (base + authinf->inf.Groups); newsize += src_grps->GroupCount /* Group SIDs */ - * (sizeof (PSID) - sizeof (OFFSET)); + * (sizeof (SID_AND_ATTRIBUTES) + - sizeof (CYG_SID_AND_ATTRIBUTES)); newsize += sizeof (PSID) - sizeof (OFFSET); /* Primary Group SID */ - newsize += sizeof (PSID) - sizeof (OFFSET); /* Owner SID */ + newsize += sizeof (PTOKEN_PRIVILEGES) - sizeof (OFFSET); /* Privileges */ + newsize += 0; /* Owner SID */ newsize += sizeof (PACL) - sizeof (OFFSET); /* Default DACL */ + if (!(tokinf = funcs->AllocateLsaHeap (newsize))) return STATUS_NO_MEMORY; tptr = (PBYTE)(tokinf + 1); |