summaryrefslogtreecommitdiff
path: root/ts2pkt.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2009-09-28 18:22:36 +0200
committerJochen Dolze <vdr@dolze.de>2009-09-28 18:22:36 +0200
commit4c6855588f9d061779681c73db2d03adaa96ad27 (patch)
tree0bdb2d21ed6e69e3e7c0f0dca09e6de0f4fca51e /ts2pkt.cpp
parentc51d2148c69cdda76f5b72e25a52c73c2b319f95 (diff)
downloadvdr-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.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/ts2pkt.cpp b/ts2pkt.cpp
index 2aca980..049d8e4 100644
--- a/ts2pkt.cpp
+++ b/ts2pkt.cpp
@@ -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)
{