X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=sdk%2Ftools%2Fmkhive%2Fregistry.c;h=a3cc71218409c960dcf3af8cdef487d4ee5ef533;hp=432b3df0cc0323c3f59ef52b849c43464bc7a3c7;hb=6a44c10d5de75886fd98d8e491c371b3832e1b27;hpb=ec3c61c23315e4f15b1541b2095d0a08e8305653 diff --git a/sdk/tools/mkhive/registry.c b/sdk/tools/mkhive/registry.c index 432b3df0cc0..a3cc7121840 100644 --- a/sdk/tools/mkhive/registry.c +++ b/sdk/tools/mkhive/registry.c @@ -30,10 +30,6 @@ * - Implement RegDeleteKeyW() and RegDeleteValueW() */ -#include -#include -#include - #define NDEBUG #include "mkhive.h" @@ -463,11 +459,18 @@ RegpCreateOrOpenKey( Volatile, &BlockOffset); } + else // if (BlockOffset == HCELL_NIL) + { + Status = STATUS_OBJECT_NAME_NOT_FOUND; // ERROR_PATH_NOT_FOUND; + } HvReleaseCell(&ParentRegistryHive->Hive, ParentCellOffset); if (!NT_SUCCESS(Status)) + { + DPRINT("RegpCreateOrOpenKey('%S'): Could not create or open subkey '%wZ'\n", KeyName, &KeyString); return ERROR_UNSUCCESSFUL; + } ParentCellOffset = BlockOffset; if (End) @@ -711,7 +714,7 @@ RegSetValueExW( } -// Synced with freeldr/windows/registry.c +// Synced with freeldr/ntldr/registry.c static VOID RepGetValueData( @@ -750,7 +753,7 @@ RepGetValueData( } } -// Similar to RegQueryValue in freeldr/windows/registry.c +// Similar to RegQueryValue in freeldr/ntldr/registry.c LONG WINAPI RegQueryValueExW( IN HKEY hKey, @@ -878,6 +881,7 @@ CreateSymLink( // IN PCWSTR TargetKeyPath OPTIONAL, IN HKEY TargetKeyHandle) { + LONG rc; PMEMKEY LinkKey, TargetKey; PREPARSE_POINT ReparsePoint; @@ -888,15 +892,20 @@ CreateSymLink( if (LinkKeyPath && !(LinkKeyHandle && *LinkKeyHandle)) { /* Create the link key */ - RegCreateKeyExW(NULL, - LinkKeyPath, - 0, - NULL, - REG_OPTION_VOLATILE, - 0, - NULL, - (HKEY*)&LinkKey, - NULL); + rc = RegCreateKeyExW(NULL, + LinkKeyPath, + 0, + NULL, + REG_OPTION_VOLATILE, + 0, + NULL, + (PHKEY)&LinkKey, + NULL); + if (rc != ERROR_SUCCESS) + { + free(ReparsePoint); + return FALSE; + } } else if (LinkKeyHandle) {