mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 00:45:24 +00:00
[ADVAPI32]
- Fix null termination in RegQueryInfoKeyA. Based on Wine commit 303daeef by Alexandre Juilliard. svn path=/trunk/; revision=71149
This commit is contained in:
parent
fa41877cb2
commit
76370aa3b4
2 changed files with 24 additions and 2 deletions
|
@ -3645,7 +3645,7 @@ RegQueryInfoKeyA(HKEY hKey,
|
|||
FALSE);
|
||||
ErrorCode = RtlNtStatusToDosError(Status);
|
||||
cClass = AnsiString.Length;
|
||||
lpClass[*lpcClass - 1] = 0;
|
||||
lpClass[cClass] = ANSI_NULL;
|
||||
}
|
||||
|
||||
if (lpcClass != NULL)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Unit tests for registry functions
|
||||
*
|
||||
* Copyright (c) 2002 Alexandre Julliard
|
||||
* Copyright (c) 2010 André Hentschel
|
||||
* Copyright (c) 2010 André Hentschel
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -1997,6 +1997,17 @@ static void test_reg_query_info(void)
|
|||
"classbuffer = \"%.*s\", expected %s\n",
|
||||
(int)sizeof(classbuffer), classbuffer, expectbuffer);
|
||||
|
||||
memset(classbuffer, 0x55, sizeof(classbuffer));
|
||||
classlen = 0xdeadbeef;
|
||||
ret = RegQueryInfoKeyA(subkey, classbuffer, &classlen, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
ok(ret == ERROR_SUCCESS, "ret = %d\n", ret);
|
||||
ok(classlen == sizeof(subkey_class) - 1, "classlen = %u\n", classlen);
|
||||
memset(expectbuffer, 0x55, sizeof(expectbuffer));
|
||||
strcpy(expectbuffer, subkey_class);
|
||||
ok(!memcmp(classbuffer, expectbuffer, sizeof(classbuffer)),
|
||||
"classbuffer = \"%.*s\", expected %s\n",
|
||||
(int)sizeof(classbuffer), classbuffer, expectbuffer);
|
||||
|
||||
memset(classbufferW, 0x55, sizeof(classbufferW));
|
||||
classlen = sizeof(subkey_class);
|
||||
ret = RegQueryInfoKeyW(subkey, classbufferW, &classlen, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
|
@ -2008,6 +2019,17 @@ static void test_reg_query_info(void)
|
|||
"classbufferW = %s, expected %s\n",
|
||||
wine_dbgstr_wn(classbufferW, sizeof(classbufferW) / sizeof(WCHAR)), wine_dbgstr_w(expectbufferW));
|
||||
|
||||
memset(classbufferW, 0x55, sizeof(classbufferW));
|
||||
classlen = 0xdeadbeef;
|
||||
ret = RegQueryInfoKeyW(subkey, classbufferW, &classlen, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
ok(ret == ERROR_SUCCESS, "ret = %d\n", ret);
|
||||
ok(classlen == sizeof(subkey_class) - 1, "classlen = %u\n", classlen);
|
||||
memset(expectbufferW, 0x55, sizeof(expectbufferW));
|
||||
lstrcpyW(expectbufferW, subkey_classW);
|
||||
ok(!memcmp(classbufferW, expectbufferW, sizeof(classbufferW)),
|
||||
"classbufferW = %s, expected %s\n",
|
||||
wine_dbgstr_wn(classbufferW, sizeof(classbufferW) / sizeof(WCHAR)), wine_dbgstr_w(expectbufferW));
|
||||
|
||||
RegDeleteKeyA(subsubkey, "");
|
||||
RegCloseKey(subsubkey);
|
||||
RegDeleteKeyA(subkey, "");
|
||||
|
|
Loading…
Reference in a new issue