diff options
author | Marco Nelissen <marcone@google.com> | 2019-06-17 11:34:28 -0700 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2019-06-17 11:34:28 -0700 |
commit | 7dd71801813e0a0df71d500d6bbe7a6432334c9b (patch) | |
tree | 0bdecf9fc47d98ad2a7056e5680ffb76e053022f /arm-wt-22k | |
parent | 57ae5cf9abb9be87743ea6fff835b9dcb96a83b2 (diff) | |
download | sonivox-7dd71801813e0a0df71d500d6bbe7a6432334c9b.tar.gz |
Fix potential memory leak
Bug: 135288058
Test: manual
Change-Id: Id6e112ae37e95cda789adc5b4a3a13e0fe1e231f
Diffstat (limited to 'arm-wt-22k')
-rw-r--r-- | arm-wt-22k/lib_src/eas_xmf.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/arm-wt-22k/lib_src/eas_xmf.c b/arm-wt-22k/lib_src/eas_xmf.c index 07ee8f7..a9fe9bf 100644 --- a/arm-wt-22k/lib_src/eas_xmf.c +++ b/arm-wt-22k/lib_src/eas_xmf.c @@ -176,19 +176,26 @@ static EAS_RESULT XMF_CheckFileType (S_EAS_DATA *pEASData, EAS_FILE_HANDLE fileH pXMFData->fileHandle = fileHandle; pXMFData->fileOffset = offset; - *ppHandle = pXMFData; /* locate the SMF and DLS contents */ if ((result = XMF_FindFileContents(pEASData->hwInstData, pXMFData)) != EAS_SUCCESS) { { /* dpp: EAS_ReportEx(_EAS_SEVERITY_ERROR, "No SMF data found in XMF file\n"); */ } + EAS_HWFree(pEASData->hwInstData, pXMFData); return result; } /* let the SMF parser take over */ - if ((result = EAS_HWFileSeek(pEASData->hwInstData, fileHandle, pXMFData->midiOffset)) != EAS_SUCCESS) + if ((result = EAS_HWFileSeek(pEASData->hwInstData, fileHandle, pXMFData->midiOffset)) != EAS_SUCCESS) { + EAS_HWFree(pEASData->hwInstData, pXMFData); return result; - return SMF_CheckFileType(pEASData, fileHandle, &pXMFData->pSMFData, pXMFData->midiOffset); + } + if ((result = SMF_CheckFileType(pEASData, fileHandle, &pXMFData->pSMFData, pXMFData->midiOffset)) != EAS_SUCCESS) { + EAS_HWFree(pEASData->hwInstData, pXMFData); + return result; + } + *ppHandle = pXMFData; + return EAS_SUCCESS; } /*---------------------------------------------------------------------------- |