Sophie

Sophie

distrib > Mageia > 9 > x86_64 > by-pkgid > 877f303ae546d7064853958698c3d075 > files > 3

avidemux-2.8.1-11.mga9.tainted.src.rpm

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