From de7f93e3bd8a3f29da3bc4e375c1634c67e58e9a Mon Sep 17 00:00:00 2001 From: eumagga0x2a <eumagga0x2a@users.noreply.github.com> Date: Sun, 2 Oct 2022 01:47:48 +0200 Subject: [PATCH 03/10] [coreDemuxerMpeg,coreUtils] Fix memleaks probing for sequenced files --- avidemux_core/ADM_coreDemuxerMpeg/src/dmx_io.cpp | 8 +++++++- avidemux_core/ADM_coreUtils/src/avidemutils.cpp | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/avidemux_core/ADM_coreDemuxerMpeg/src/dmx_io.cpp b/avidemux_core/ADM_coreDemuxerMpeg/src/dmx_io.cpp index 0f2745c1c..da259d802 100644 --- a/avidemux_core/ADM_coreDemuxerMpeg/src/dmx_io.cpp +++ b/avidemux_core/ADM_coreDemuxerMpeg/src/dmx_io.cpp @@ -85,7 +85,13 @@ uint8_t fileParser::open( const char *filename, int *multi ) { aprintf("left:<%s>, right=<%s>,base=%" PRIu32",digit=%" PRIu32"\n",left,right,base,decimals); nbFollowUps = ADM_probeSequencedFile(filename,multi); - if(nbFollowUps<0) return 0; + if(nbFollowUps < 1) + { + delete [] left; + delete [] right; + if(nbFollowUps < 0) + return 0; + } }else { aprintf("No.\n"); diff --git a/avidemux_core/ADM_coreUtils/src/avidemutils.cpp b/avidemux_core/ADM_coreUtils/src/avidemutils.cpp index 29375ba5a..9caa96b14 100644 --- a/avidemux_core/ADM_coreUtils/src/avidemutils.cpp +++ b/avidemux_core/ADM_coreUtils/src/avidemutils.cpp @@ -517,7 +517,11 @@ int ADM_probeSequencedFile(const char *fileName, int *fragmentSize) // can we open the file? int64_t sz=ADM_fileSize(fileName); if(sz<0) // nope + { + delete [] left; + delete [] right; return sz; + } bool skipSizeCheck=*fragmentSize<0; // check whether the filesize approx. matches 2^n GiB, the usual @@ -557,7 +561,7 @@ int ADM_probeSequencedFile(const char *fileName, int *fragmentSize) for(int i=0;i<rounds;i++) { if(!i && fileSize < threshold-tolerance) - return 0; + break; if(fileSize >= threshold-tolerance && fileSize <= threshold+tolerance) { count=1; @@ -569,7 +573,11 @@ int ADM_probeSequencedFile(const char *fileName, int *fragmentSize) tolerance<<=3; // 8 MiB starting with 1 GiB fragment size } if(!count) + { + delete [] left; + delete [] right; return 0; + } }else { count=1; // the first sequence to check -- 2.30.4