Index: create.cpp =================================================================== --- create.cpp (revision 71111) +++ create.cpp (working copy) @@ -2312,7 +2312,10 @@ ((LocalPath->Buffer[LocalPath->Length/sizeof(WCHAR)-1] != L':') /*&& (LocalPath->Buffer[LocalPath->Length/sizeof(WCHAR)-1] != L'\\')*/) )) { RC = MyAppendUnicodeToString(&(NewFCBName->ObjectName), L"\\"); - if(!NT_SUCCESS(RC)) return STATUS_INSUFFICIENT_RESOURCES; + if(!NT_SUCCESS(RC)) { + UDFReleaseObjectName(NewFCBName); + return STATUS_INSUFFICIENT_RESOURCES; + } } // Make link between Fcb and FileInfo @@ -2322,9 +2325,10 @@ if(!((*PtrNewFcb)->NTRequiredFCB = NewFileInfo->Dloc->CommonFcb)) { if(!((*PtrNewFcb)->NTRequiredFCB = - (PtrUDFNTRequiredFCB)MyAllocatePool__(NonPagedPool, UDFQuadAlign(sizeof(UDFNTRequiredFCB))) ) ) + (PtrUDFNTRequiredFCB)MyAllocatePool__(NonPagedPool, UDFQuadAlign(sizeof(UDFNTRequiredFCB))) ) ) { + UDFReleaseObjectName(NewFCBName); return STATUS_INSUFFICIENT_RESOURCES; - + } KdPrint(("UDFAllocateNtReqFCB: %x\n", (*PtrNewFcb)->NTRequiredFCB)); RtlZeroMemory((*PtrNewFcb)->NTRequiredFCB, UDFQuadAlign(sizeof(UDFNTRequiredFCB))); (*PtrNewFcb)->FileInfo->Dloc->CommonFcb = (*PtrNewFcb)->NTRequiredFCB; @@ -2333,6 +2337,7 @@ if(!(NewFileInfo->Dloc->CommonFcb->NtReqFCBFlags & UDF_NTREQ_FCB_VALID)) { (*PtrNewFcb)->NTRequiredFCB = NULL; BrutePoint(); + UDFReleaseObjectName(NewFCBName); return STATUS_ACCESS_DENIED; } }