diff options
author | Jochen Dolze <vdr@dolze.de> | 2009-09-28 18:22:36 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2009-09-28 18:22:36 +0200 |
commit | 4c6855588f9d061779681c73db2d03adaa96ad27 (patch) | |
tree | 0bdb2d21ed6e69e3e7c0f0dca09e6de0f4fca51e /ts2pkt.cpp | |
parent | c51d2148c69cdda76f5b72e25a52c73c2b319f95 (diff) | |
download | vdr-plugin-markad-4c6855588f9d061779681c73db2d03adaa96ad27.tar.gz vdr-plugin-markad-4c6855588f9d061779681c73db2d03adaa96ad27.tar.bz2 |
Fixed buffer handling in ts2pkt
Added TS PAT/PMT handling in markad-standalone
Diffstat (limited to 'ts2pkt.cpp')
-rw-r--r-- | ts2pkt.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
@@ -235,13 +235,17 @@ int cMarkAdTS2Pkt::Process(MarkAdPid Pid, uchar *TSData, int TSSize, uchar **Pkt Reset(MA_ERR_TOBIG); return TS_SIZE; } - if (buflen<=0) + if (buflen<0) { // error in size Reset(MA_ERR_NEG); return TS_SIZE; } - + if (buflen==0) + { + // no data? + return TS_SIZE; + } } pktdata=(uchar *) realloc(pktdata,pktsize+buflen); if (!pktdata) @@ -307,11 +311,21 @@ int cMarkAdTS2Pkt::Process(MarkAdPid Pid, uchar *TSData, int TSSize, uchar **Pkt pktdatalast=pktdata; int bufleftsize=pktsize-(pktinfo.pkthdr+size); - if (bufleftsize<=0) + if (bufleftsize<0) { + pktdata=NULL; Reset(MA_ERR_NEG); return bytes_processed; } + + if (bufleftsize==0) + { + pktinfo.pkthdr=-1; + pktdata=NULL; + pktsize=0; + return bytes_processed; + } + uchar *bufleft=(uchar *) malloc(bufleftsize); if (!bufleft) { |