summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY6
-rw-r--r--remux.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/HISTORY b/HISTORY
index 557323c8..bd3e0a3d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -3037,7 +3037,7 @@ Video Disk Recorder Revision History
checking if the channel has a non-zero number.
- Updated 'channels.conf.terr' for Hannover (thanks to Sven Kreiensen).
-2004-10-23: Version 1.3.14
+2004-10-24: Version 1.3.14
- Fixed detecting transponder lock in cDvbTuner (based on a patch from Stefan
Meyknecht).
@@ -3059,3 +3059,7 @@ Video Disk Recorder Revision History
- Some minor code cleanups (thanks to Prakash K. Cheemplavam).
- Fixed missing cleanup at program exit in case there is a problem with a plugin
(thanks to Mattias Grönlund for pointing this out).
+- Increased the required free buffer space in the resultBuffer of cRemux to
+ 2 * IPACKS to avoid a buffer overflow in case a cTS2PES writes one complete
+ packet and then (within processing the same TS packet) wants to write another
+ small packet.
diff --git a/remux.c b/remux.c
index 2c1c9f2e..e096f9cc 100644
--- a/remux.c
+++ b/remux.c
@@ -8,7 +8,7 @@
* the Linux DVB driver's 'tuxplayer' example and were rewritten to suit
* VDR's needs.
*
- * $Id: remux.c 1.20 2004/10/23 12:06:13 kls Exp $
+ * $Id: remux.c 1.21 2004/10/24 09:25:33 kls Exp $
*/
#include "remux.h"
@@ -491,8 +491,8 @@ int cRemux::Put(const uchar *Data, int Count)
break;
if (Data[i] != TS_SYNC_BYTE)
break;
- if (resultBuffer->Free() < IPACKS)
- break;
+ if (resultBuffer->Free() < 2 * IPACKS)
+ break; // A cTS2PES might write one full packet and also a small rest
int pid = GetPid(Data + i + 1);
if (Data[i + 3] & 0x10) { // got payload
if (pid == vPid) vTS2PES->ts_to_pes(Data + i);