printf(" Creating binary hive: %s\n", FileName);
/* Create new hive file */
- File = fopen(FileName, "w+b");
+ File = fopen(FileName, "wb");
if (File == NULL)
{
printf(" Error creating/opening file\n");
IN HKEY KeyHandle,
IN PWCHAR ValueName,
IN PWCHAR Strings,
- IN ULONG StringSize)
+ IN ULONG StringSize) // In characters
{
- ULONG Size;
+ ULONG Size, Total; // In bytes
ULONG Type;
- ULONG Total;
PWCHAR Buffer;
PWCHAR p;
size_t len;
if ((Error != ERROR_SUCCESS) || (Type != REG_MULTI_SZ))
return;
- Buffer = malloc ((Size + StringSize) * sizeof(WCHAR));
+ Buffer = malloc(Size + StringSize * sizeof(WCHAR));
if (Buffer == NULL)
return;
if (*p == 0) /* not found, need to append it */
{
- memcpy (p, Strings, len);
+ memcpy(p, Strings, len * sizeof(WCHAR));
p[len] = 0;
- Total += len;
+ Total += len * sizeof(WCHAR);
}
Strings += len;
}
0,
REG_MULTI_SZ,
(PUCHAR)Buffer,
- Total * sizeof(WCHAR));
+ Total + sizeof(WCHAR));
}
done: