diff --git a/reactos/win32ss/gdi/eng/device.c b/reactos/win32ss/gdi/eng/device.c index 32d0ce629fb..d5b65ccff61 100644 --- a/reactos/win32ss/gdi/eng/device.c +++ b/reactos/win32ss/gdi/eng/device.c @@ -113,7 +113,8 @@ EngpRegisterGraphicsDevice( pGraphicsDevice->pwszDescription = pwsz + pustrDiplayDrivers->Length / sizeof(WCHAR); RtlCopyMemory(pGraphicsDevice->pwszDescription, pustrDescription->Buffer, - pustrDescription->Length + sizeof(WCHAR)); + pustrDescription->Length); + pGraphicsDevice->pwszDescription[pustrDescription->Length/sizeof(WCHAR)] = 0; /* Initialize the pdevmodeInfo list and default index */ pGraphicsDevice->pdevmodeInfo = NULL; diff --git a/reactos/win32ss/user/ntuser/misc/registry.c b/reactos/win32ss/user/ntuser/misc/registry.c index 81dff489ebf..9258027299d 100644 --- a/reactos/win32ss/user/ntuser/misc/registry.c +++ b/reactos/win32ss/user/ntuser/misc/registry.c @@ -58,7 +58,7 @@ RegQueryValue( ULONG cbInfoSize, cbDataSize; /* Check if the local buffer is sufficient */ - cbInfoSize = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) + *pcbValue; + cbInfoSize = FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data[*pcbValue]); if (cbInfoSize <= sizeof(ajBuffer)) { pInfo = (PVOID)ajBuffer; @@ -82,7 +82,7 @@ RegQueryValue( cbInfoSize, &cbInfoSize); - cbDataSize = cbInfoSize - FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data); + cbDataSize = pInfo->DataLength; /* Note: STATUS_BUFFER_OVERFLOW is not a success */ if (NT_SUCCESS(Status))