From c76b9a359ce727786bfcf7ef0457f0a8419251d5 Mon Sep 17 00:00:00 2001 From: Mikolaj Zalewski Date: Mon, 24 Sep 2007 19:04:11 -0700 Subject: [PATCH] advapi32: fix ConvertStringSidToSid --- dlls/advapi32/security.c | 4 ++-- dlls/advapi32/tests/security.c | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 3f49d6d..b1984a9 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -3900,12 +3900,12 @@ static BOOL ParseStringSidToSid(LPCWSTR while (*StringSid) { + pisid->SubAuthority[i++] = atoiW(StringSid); + while (*StringSid && *StringSid != '-') StringSid++; if (*StringSid == '-') StringSid++; - - pisid->SubAuthority[i++] = atoiW(StringSid); } if (i != pisid->SubAuthorityCount) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 86c4c50..9e356ac 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -148,6 +148,7 @@ static void test_sid(void) const char noSubAuthStr[] = "S-1-5"; unsigned int i; PSID psid = NULL; + SID *pisid; BOOL r; LPSTR str = NULL; @@ -185,6 +186,13 @@ static void test_sid(void) "expected GetLastError() is ERROR_INVALID_SID, got %d\n", GetLastError() ); + ok(pConvertStringSidToSidA("S-1-5-21-93476-23408-4576", &psid), "ConvertStringSidToSidA failed\n"); + pisid = (SID *)psid; + ok(pisid->SubAuthorityCount == 4, "Invalid sub authority count - expected 4, got %d\n", pisid->SubAuthorityCount); + ok(pisid->SubAuthority[0] == 21, "Invalid subauthority 0 - expceted 21, got %d\n", pisid->SubAuthority[0]); + ok(pisid->SubAuthority[3] == 4576, "Invalid subauthority 0 - expceted 4576, got %d\n", pisid->SubAuthority[3]); + LocalFree(str); + for( i = 0; i < sizeof(refs) / sizeof(refs[0]); i++ ) { PISID pisid; -- 1.4.1