From 082e0bfe9355e7dfeaef6a7397c908df0e8fb219 Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Wed, 1 Oct 2003 03:14:29 +0000 Subject: [PATCH] Fix missing mem freeing on error path. --- dlls/advapi32/crypt.c | 4 +++- dlls/commdlg/printdlg16.c | 1 + dlls/ole32/clipboard.c | 4 +++- dlls/ole32/filemoniker.c | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c index 7fd9642e280..7f0e3c88be1 100644 --- a/dlls/advapi32/crypt.c +++ b/dlls/advapi32/crypt.c @@ -758,8 +758,10 @@ BOOL WINAPI CryptEnumProviderTypesA (DWORD dwIndex, DWORD *pdwReserved, keylen++; if ( !(keyname = CRYPT_Alloc(keylen)) ) CRYPT_ReturnLastError(ERROR_NOT_ENOUGH_MEMORY); - if ( RegEnumKeyA(hKey, dwIndex, keyname, keylen) ) + if ( RegEnumKeyA(hKey, dwIndex, keyname, keylen) ) { + CRYPT_Free(keyname); return FALSE; + } RegOpenKeyA(hKey, keyname, &hSubkey); ch = keyname + strlen(keyname); /* Convert "Type 000" to 0, etc/ */ diff --git a/dlls/commdlg/printdlg16.c b/dlls/commdlg/printdlg16.c index 8d8408062b7..83b7f97bd0b 100644 --- a/dlls/commdlg/printdlg16.c +++ b/dlls/commdlg/printdlg16.c @@ -377,6 +377,7 @@ BOOL16 WINAPI PrintDlg16( if (!GetPrinterDriverA(hprn, NULL, 3, (LPBYTE)dbuf, needed, &needed)) { ERR("GetPrinterDriverA failed for %s, le %ld, fix your config!\n", pbuf->pPrinterName,GetLastError()); + HeapFree(GetProcessHeap(), 0, dbuf); COMDLG32_SetCommDlgExtendedError(PDERR_RETDEFFAILURE); return FALSE; } diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index cccf4bce034..ac8a4d5c64e 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -1582,8 +1582,10 @@ LPENUMFORMATETC OLEClipbrd_IEnumFORMATETC_Construct(UINT cfmt, const FORMATETC a ef->posFmt = 0; ef->countFmt = cfmt; - if (FAILED(CoGetMalloc(MEMCTX_TASK, &pIMalloc))) + if (FAILED(CoGetMalloc(MEMCTX_TASK, &pIMalloc))) { + HeapFree(GetProcessHeap(), 0, ef); return NULL; + } ef->pFmt = (LPFORMATETC)IMalloc_Alloc(pIMalloc, size); IMalloc_Release(pIMalloc); diff --git a/dlls/ole32/filemoniker.c b/dlls/ole32/filemoniker.c index 1f9cdb3b7ba..a098059f29e 100644 --- a/dlls/ole32/filemoniker.c +++ b/dlls/ole32/filemoniker.c @@ -323,8 +323,10 @@ HRESULT WINAPI FileMonikerImpl_Load(IMoniker* iface,IStream* pStm) filePathW=HeapAlloc(GetProcessHeap(),0,(length+1)*sizeof(WCHAR)); filePathW[length]=0; res=IStream_Read(pStm,filePathW,doubleLenHex,&bread); - if (bread!=doubleLenHex) + if (bread!=doubleLenHex) { + HeapFree(GetProcessHeap(), 0, filePathW); return E_FAIL; + } if (This->filePathName!=NULL) HeapFree(GetProcessHeap(),0,This->filePathName);