summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2004-11-16 16:57:43 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2004-11-16 16:57:43 +0100
commit1d8676e85f1f1df9883e273962d753cff5232f1e (patch)
tree52bda7e33cd1c03a03566dfd1e616a3f12c4a04c
parentac8e03a89cb86e2f68924533d53a3c93f7c972c9 (diff)
downloadvdr-1d8676e85f1f1df9883e273962d753cff5232f1e.tar.gz
vdr-1d8676e85f1f1df9883e273962d753cff5232f1e.tar.bz2
Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond the end of the given buffer
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY6
-rw-r--r--config.h6
-rw-r--r--remux.c4
4 files changed, 14 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 000ed460..d6dfba1c 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1079,6 +1079,9 @@ Marco Schlüßler <marco@lordzodiac.de>
for fixing the cDvbSpuDecoder
for fixing a short glitch when starting a recording on the primary device while
in replay or transfer mode
+ for fixing cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
+ the end of the given buffer, which has caused some unjustified "unknown picture
+ type errors"
Jürgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP
diff --git a/HISTORY b/HISTORY
index 019861a7..8ee0a494 100644
--- a/HISTORY
+++ b/HISTORY
@@ -3138,3 +3138,9 @@ Video Disk Recorder Revision History
shot" and "repeating". The keys '1'...'7' can be used to toggle the individual
days ('1' is monday). Thanks to Sascha Klek for reporting a problem with the
'0' key in the "Day" item of the "Timers" menu.
+
+2004-11-16: Version 1.3.17
+
+- Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
+ the end of the given buffer, which has caused some unjustified "unknown
+ picture type errors" (thanks to Marco Schlüßler).
diff --git a/config.h b/config.h
index 955eb9f8..212f8781 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.204 2004/11/02 17:20:27 kls Exp $
+ * $Id: config.h 1.205 2004/11/16 16:57:43 kls Exp $
*/
#ifndef __CONFIG_H
@@ -20,8 +20,8 @@
#include "i18n.h"
#include "tools.h"
-#define VDRVERSION "1.3.16"
-#define VDRVERSNUM 10316 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.3.17"
+#define VDRVERSNUM 10317 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99
#define MAXLIFETIME 99
diff --git a/remux.c b/remux.c
index e096f9cc..b9c04af3 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.21 2004/10/24 09:25:33 kls Exp $
+ * $Id: remux.c 1.22 2004/11/16 16:49:03 kls Exp $
*/
#include "remux.h"
@@ -451,7 +451,7 @@ int cRemux::ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &Pic
if (Length >= 8) {
int i = Offset + 8; // the minimum length of the video packet header
i += Data[i] + 1; // possible additional header bytes
- for (; i < Offset + Length; i++) {
+ for (; i < Offset + Length - 5; i++) {
if (Data[i] == 0 && Data[i + 1] == 0 && Data[i + 2] == 1) {
switch (Data[i + 3]) {
case SC_PICTURE: PictureType = (Data[i + 5] >> 3) & 0x07;