summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2009-09-27 22:26:49 +0200
committerJochen Dolze <vdr@dolze.de>2009-09-27 22:26:49 +0200
commit577280a1796e5cf90d5eb05d2232690ab83f0bd8 (patch)
tree6c1649383e36806fb1e153d8aa59bd2c211334a6
parent36cba6f238db17094e18ca3144bd7d5d8a4ffdf0 (diff)
downloadvdr-plugin-markad-577280a1796e5cf90d5eb05d2232690ab83f0bd8.tar.gz
vdr-plugin-markad-577280a1796e5cf90d5eb05d2232690ab83f0bd8.tar.bz2
Check buffer length for zero size
-rw-r--r--recv.cpp4
-rw-r--r--ts2pkt.cpp8
2 files changed, 8 insertions, 4 deletions
diff --git a/recv.cpp b/recv.cpp
index 43a0e5e..f9562bf 100644
--- a/recv.cpp
+++ b/recv.cpp
@@ -264,8 +264,8 @@ void cMarkAdReceiver::AddMark(MarkAdMark *mark, int Priority)
prevmark->comment=strcatrealloc(prevmark->comment," ");
prevmark->comment=strcatrealloc(prevmark->comment,mark->Comment);
- marks.Del(newmark,true);
dsyslog("markad [%i]: delete mark %i",recvnumber,newmark->position);
+ marks.Del(newmark,true);
}
else
{
@@ -273,8 +273,8 @@ void cMarkAdReceiver::AddMark(MarkAdMark *mark, int Priority)
mark->Comment=strcatrealloc(mark->Comment," ");
mark->Comment=strcatrealloc(mark->Comment,prevmark->comment);
- marks.Del(prevmark,true);
dsyslog("markad [%i]: delete previous mark %i",recvnumber,prevmark->position);
+ marks.Del(prevmark,true);
}
marks.Save();
}
diff --git a/ts2pkt.cpp b/ts2pkt.cpp
index 7d66c08..2aca980 100644
--- a/ts2pkt.cpp
+++ b/ts2pkt.cpp
@@ -235,7 +235,7 @@ 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);
@@ -307,7 +307,11 @@ int cMarkAdTS2Pkt::Process(MarkAdPid Pid, uchar *TSData, int TSSize, uchar **Pkt
pktdatalast=pktdata;
int bufleftsize=pktsize-(pktinfo.pkthdr+size);
-
+ if (bufleftsize<=0)
+ {
+ Reset(MA_ERR_NEG);
+ return bytes_processed;
+ }
uchar *bufleft=(uchar *) malloc(bufleftsize);
if (!bufleft)
{