Page 1 of 1

LibHFZ memory leaks

PostPosted: Sun Sep 07, 2008 1:26 am
by gregery
Need to be free from mem block dumps,

long hfzReadHeader(hfzFile* fs, hfzHeader& fh) {
...
if(hl) {

char* pBuf;
if(!(pBuf = (char*)hfzMalloc(hl))) {
return LIBHFZ_ERROR_ALLOC_FAILED;
}

if(hl!=hfzRead(fs, pBuf, hl)) {
hfzFree(pBuf);
return LIBHFZ_ERROR_READ_FAILED;
}

long rval = hfzHeader_DecodeExtHeaderBuf(fh, pBuf);
if(rval<0) {
hfzFree(pBuf);
return rval;
}

// added: pBuf is mem copied in calls, so only a temp buffer

hfzFree(pBuf);
}

and I found this but bigendian is for toy computers anyway

long hfzByteSwap(void* pData, unsigned long DataSize) {
if(!pData) return LIBHFZ_ERROR_INVALID_HANDLE;
if(!DataSize) return LIBHFZ_ERROR_INVALID_PARAM;

void* pSwap = hfzMalloc(DataSize);
if(!pSwap) return LIBHFZ_ERROR_ALLOC_FAILED;

// re-sort into swap
for(unsigned long i=0; i<DataSize; i++) {
((char*)pSwap)[i] = ((char*)pData)[DataSize - i - 1];
}

// now copy back
hfzMemcpy(pData, pSwap, DataSize);

// Added: Don't need this temp buffer anymore

hfzFree(pSwap);

return LIBHFZ_STATUS_OK;
}

PostPosted: Sun Sep 07, 2008 8:27 am
by Aaron
Hi Gregery,

Thank-you very much for spotting those bugs. I've upload an updated LibHFZ with the fixes for those two memory leaks. Thanks again!

Best regards,
Aaron.