mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-31 04:13:37 +00:00
[ADVAPI32] Set REG_NONE type in RegQueryValueExW with certain failure cases. Patch by Victor Martinez Calvo. CORE-9666 #resolve #comment Thanks!
svn path=/trunk/; revision=73143
This commit is contained in:
@@ -4135,19 +4135,25 @@ RegQueryValueExW(
|
||||
|
||||
RtlInitUnicodeString( &name_str, name );
|
||||
|
||||
if (data) total_size = min( sizeof(buffer), *count + info_size );
|
||||
if (data)
|
||||
total_size = min( sizeof(buffer), *count + info_size );
|
||||
else
|
||||
{
|
||||
total_size = info_size;
|
||||
if (count) *count = 0;
|
||||
}
|
||||
|
||||
/* this matches Win9x behaviour - NT sets *type to a random value */
|
||||
if (type) *type = REG_NONE;
|
||||
|
||||
status = NtQueryValueKey( hkey, &name_str, KeyValuePartialInformation,
|
||||
buffer, total_size, &total_size );
|
||||
if (!NT_SUCCESS(status) && status != STATUS_BUFFER_OVERFLOW) goto done;
|
||||
|
||||
if (!NT_SUCCESS(status) && status != STATUS_BUFFER_OVERFLOW)
|
||||
{
|
||||
// NT: Valid handles with inexistant/null values or invalid (but not NULL) handles sets type to REG_NONE
|
||||
if ((status == STATUS_OBJECT_NAME_NOT_FOUND) ||(status == STATUS_INVALID_HANDLE && hkey))
|
||||
{
|
||||
if (type) *type = REG_NONE;
|
||||
if (count) *count = 0;
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (data)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user