Sophie

Sophie

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

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

From ddf107223c9c9feecde36d1d41776275c23602f4 Mon Sep 17 00:00:00 2001
From: eumagga0x2a <eumagga0x2a@users.noreply.github.com>
Date: Tue, 4 Oct 2022 02:22:04 +0200
Subject: [PATCH 06/10] [demuxers/MpegTS] Compare offsets instead of pointers

---
 .../ADM_demuxers/MpegTS/dmxTSPacket.cpp             | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp b/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp
index a6aa630eb..8a6effe1d 100644
--- a/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp
+++ b/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp
@@ -347,10 +347,8 @@ bool tsPacket::getNextPSI(uint32_t pid,TS_PSIpacketInfo *psi)
     uint64_t startOffset=0;
     uint32_t remaining,sectionLength=0;
     uint32_t transportStreamId=0;
-    uint32_t dummy;
+    uint32_t dummy,tail = 0;
     TSpacketInfo pkt;
-    uint8_t *ptr = psi->payload;
-    uint8_t *end = ptr + TS_PSI_MAX_LEN;
 nextPack2:
     if(nbRetries && pkt.startAt-startOffset>(1<<25)) // max. 32 MiB
     {
@@ -452,9 +450,9 @@ nextPack2:
     while(true)
     {
         int chunk = (pkt.payloadSize > remaining)? remaining : pkt.payloadSize;
-        ADM_assert(ptr + chunk < end);
-        memcpy(ptr, pkt.payload, chunk); // we keep PSI table header here
-        ptr += chunk;
+        ADM_assert(tail + chunk < TS_PSI_MAX_LEN);
+        memcpy(psi->payload + tail, pkt.payload, chunk); // we keep PSI table header here
+        tail += chunk;
         remaining -= chunk;
         if(remaining < 1) break;
         goto nextPack2;
@@ -463,8 +461,7 @@ nextPack2:
     if(false == verifyPsiChecksum(psi->payload, sectionLength + PSI_TABLE_HEADER_SIZE))
     {
         multiPacketPsi = 0;
-        // Reset pointer
-        ptr = psi->payload;
+        tail = 0;
         goto nextPack2;
     }
     psi->payloadSize = sectionLength - PSI_TABLE_SYNTAX_SIZE - PSI_CHECKSUM_SIZE;
-- 
2.30.4