missing reg key closing

This commit is contained in:
Hane 2023-08-07 15:17:36 +02:00
commit bbed99ba8c

View file

@ -79,9 +79,12 @@ namespace tmr {
LPBYTE dataContent = nullptr; LPBYTE dataContent = nullptr;
DWORD dataLen; DWORD dataLen;
status = RegOpenKeyExW(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, status = RegOpenKeyExW(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"), 0, KEY_QUERY_VALUE, &key);
KEY_QUERY_VALUE, &key);
if(status != ERROR_SUCCESS) return CANT_OPEN_KEY; if(status != ERROR_SUCCESS) {
status = RegCloseKey(key);
return CANT_OPEN_KEY;
}
status = RegQueryInfoKey( status = RegQueryInfoKey(
key, // key handle key, // key handle
@ -96,7 +99,10 @@ namespace tmr {
&longestDataSize, // longest value data &longestDataSize, // longest value data
NULL, // security descriptor NULL, // security descriptor
NULL); // last write time NULL); // last write time
if(status != ERROR_SUCCESS) return CANT_RETRIEVE_KEY_INFO; if(status != ERROR_SUCCESS) {
status = RegCloseKey(key);
return CANT_RETRIEVE_KEY_INFO;
}
dataLen = sizeof(REG_QWORD) * (longestDataSize); dataLen = sizeof(REG_QWORD) * (longestDataSize);
dataContent = (LPBYTE)malloc(dataLen); dataContent = (LPBYTE)malloc(dataLen);
@ -113,7 +119,10 @@ namespace tmr {
&dataLen &dataLen
); );
if(status != ERROR_SUCCESS) return CANT_READ_DATA_FROM_VALUE; if(status != ERROR_SUCCESS) {
RegCloseKey(key);
return CANT_READ_DATA_FROM_VALUE;
}
if (CSTR_EQUAL == CompareStringEx( if (CSTR_EQUAL == CompareStringEx(
LOCALE_NAME_INVARIANT, LOCALE_NAME_INVARIANT,
@ -125,14 +134,15 @@ namespace tmr {
NULL, NULL,
NULL, NULL,
0 0
) ))
) { {
LPDWORD PMHz = (LPDWORD)dataContent; LPDWORD PMHz = (LPDWORD)dataContent;
DWORD MHz = *PMHz; DWORD MHz = *PMHz;
free(dataContent); free(dataContent);
return MHz * 1000000; return MHz * 1000000;
} }
} }
status = RegCloseKey(key);
return CANT_READ_DATA_FROM_VALUE; return CANT_READ_DATA_FROM_VALUE;
} }