don't free the string allocated by RtlDosPathNameToNtPathName_U using RtlFreeUnicodeString because the string isn't allocated with the USTR tag Modified: trunk/reactos/lib/advapi32/reg/reg.c Modified: trunk/reactos/lib/advapi32/sec/misc.c _____
Modified: trunk/reactos/lib/advapi32/reg/reg.c --- trunk/reactos/lib/advapi32/reg/reg.c 2006-01-22 12:29:40 UTC (rev 20973) +++ trunk/reactos/lib/advapi32/reg/reg.c 2006-01-22 13:06:23 UTC (rev 20974) @@ -2662,7 +2662,9 @@
Status = NtLoadKey (&KeyObjectAttributes, &FileObjectAttributes);
- RtlFreeUnicodeString (&FileName); + RtlFreeHeap (RtlGetProcessHeap (), + 0, + FileName.Buffer);
if (!NT_SUCCESS(Status)) { @@ -3948,7 +3950,9 @@ NULL, NULL)) { - RtlFreeUnicodeString (&NewFileName); + RtlFreeHeap (RtlGetProcessHeap (), + 0, + NewFileName.Buffer); if (CloseRealKey) { NtClose (RealKeyHandle); @@ -3967,8 +3971,12 @@ RealKeyHandle, &OldObjectAttributes);
- RtlFreeUnicodeString (&OldFileName); - RtlFreeUnicodeString (&NewFileName); + RtlFreeHeap (RtlGetProcessHeap (), + 0, + OldFileName.Buffer); + RtlFreeHeap (RtlGetProcessHeap (), + 0, + NewFileName.Buffer);
if (CloseRealKey) { @@ -4063,7 +4071,9 @@ &IoStatusBlock, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT); - RtlFreeUnicodeString (&FileName); + RtlFreeHeap (RtlGetProcessHeap(), + 0, + FileName.Buffer); if (!NT_SUCCESS(Status)) { goto Cleanup; @@ -4165,7 +4175,9 @@ FILE_OPEN_FOR_BACKUP_INTENT | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); - RtlFreeUnicodeString (&FileName); + RtlFreeHeap (RtlGetProcessHeap (), + 0, + FileName.Buffer); if (!NT_SUCCESS(Status)) { goto Cleanup; _____
Modified: trunk/reactos/lib/advapi32/sec/misc.c --- trunk/reactos/lib/advapi32/sec/misc.c 2006-01-22 12:29:40 UTC (rev 20973) +++ trunk/reactos/lib/advapi32/sec/misc.c 2006-01-22 13:06:23 UTC (rev 20974) @@ -243,6 +243,11 @@
&StatusBlock, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0); + + RtlFreeHeap(RtlGetProcessHeap(), + 0, + FileName.Buffer); + if (!NT_SUCCESS(Status)) { DPRINT("NtOpenFile() failed (Status %lx)\n", Status); @@ -250,8 +255,6 @@ return FALSE; }
- RtlFreeUnicodeString(&FileName); - Status = NtQuerySecurityObject(FileHandle, RequestedInformation, pSecurityDescriptor, @@ -387,6 +390,11 @@ &StatusBlock, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0); + + RtlFreeHeap(RtlGetProcessHeap(), + 0, + FileName.Buffer); + if (!NT_SUCCESS(Status)) { DPRINT("NtOpenFile() failed (Status %lx)\n", Status); @@ -394,8 +402,6 @@ return FALSE; }
- RtlFreeUnicodeString(&FileName); - Status = NtSetSecurityObject(FileHandle, SecurityInformation, pSecurityDescriptor);