diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c index 31645a7b68c..40a08348ed6 100644 --- a/programs/regedit/edit.c +++ b/programs/regedit/edit.c @@ -224,7 +224,7 @@ static LPTSTR read_value(HWND hwnd, HKEY hKey, LPCTSTR valueName, DWORD *lpType, goto done; } if ( *lpType == REG_DWORD ) valueDataLen = sizeof(DWORD); - if (!(buffer = HeapAlloc(GetProcessHeap(), 0, valueDataLen))) { + if (!(buffer = HeapAlloc(GetProcessHeap(), 0, valueDataLen+1))) { error(hwnd, IDS_TOO_BIG_VALUE, valueDataLen); goto done; } @@ -233,7 +233,7 @@ static LPTSTR read_value(HWND hwnd, HKEY hKey, LPCTSTR valueName, DWORD *lpType, error(hwnd, IDS_BAD_VALUE, valueName); goto done; } - + buffer[valueDataLen] = 0; if(len) *len = valueDataLen; return buffer; diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 85ab36b9cbc..b91cbf54df2 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -764,7 +764,7 @@ static void export_hkey(FILE *file, HKEY key, case REG_SZ: case REG_EXPAND_SZ: fputs("\"", file); - REGPROC_export_string(file, (char*) *val_buf); + if (val_size1) REGPROC_export_string(file, (char*) *val_buf); fputs("\"\n", file); break;