diff options
| -rw-r--r-- | CONTRIBUTORS | 1 | ||||
| -rw-r--r-- | HISTORY | 1 | ||||
| -rw-r--r-- | remux.c | 11 | 
3 files changed, 9 insertions, 4 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 88f60ce2..67610875 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -677,6 +677,7 @@ Oliver Endriss <o.endriss@gmx.de>   for reporting broken index generation in TS recordings after a buffer overflow   for fixing the way the OSD size is determined on full featured DVB cards   for his input on calculating the Aspect factor in GetOsdSize() + for suggesting a better way of handling calls to realloc()  Reinhard Walter Buchner <rw.buchner@freenet.de>   for adding some satellites to 'sources.conf' @@ -6537,3 +6537,4 @@ Video Disk Recorder Revision History  - Added Serbian language texts (thanks to Milan Cvijanovic).  - Fixed reallocating memory in the "pictures" plugin (reported by Paul Menzel, with    input from Oliver Endriss). +- Fixed reallocating memory in cTsToPes::PutTs() (suggested by Oliver Endriss). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: remux.c 2.48 2010/11/01 12:29:17 kls Exp $ + * $Id: remux.c 2.49 2011/02/20 17:27:47 kls Exp $   */  #include "remux.h" @@ -666,9 +666,12 @@ void cTsToPes::PutTs(const uchar *Data, int Length)       return; // skip everything before the first payload start    Length = TsGetPayload(&Data);    if (length + Length > size) { -     size = max(KILOBYTE(2), length + Length); -     data = (uchar *)realloc(data, size); -     if (!data) { +     int NewSize = max(KILOBYTE(2), length + Length); +     if (uchar *NewData = (uchar *)realloc(data, NewSize)) { +        data = NewData; +        size = NewSize; +        } +     else {          Reset();          return;          } | 
