diff options
author | Jochen Dolze <vdr@dolze.de> | 2009-10-06 00:36:26 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2009-10-06 00:36:26 +0200 |
commit | c11caab8aa7f1e296694e2eaa4477d299adcd1e6 (patch) | |
tree | 64adfc0dbab11a45f804489f9f4bddbef720fb0c /pes2es.cpp | |
parent | c69708374c62615009e2b92783dcea696166470e (diff) | |
download | vdr-plugin-markad-c11caab8aa7f1e296694e2eaa4477d299adcd1e6.tar.gz vdr-plugin-markad-c11caab8aa7f1e296694e2eaa4477d299adcd1e6.tar.bz2 |
Fixed TS packet processing (buffer overflows)
Added packet injection
Diffstat (limited to 'pes2es.cpp')
-rw-r--r-- | pes2es.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -41,9 +41,13 @@ void cMarkAdPES2ES::Process(MarkAdPid Pid, uchar *PESData, int PESSize, uchar ** return; } - int Length=(peshdr->LenH<<8)+peshdr->LenL+sizeof(PESHDR); + if (peshdr->StreamID<=0xBC) return; + + int Length=(peshdr->LenH<<8)+peshdr->LenL; + if (Length) Length+=sizeof(PESHDR); if (Length!=PESSize) { + if ((peshdr->StreamID & 0xF0)==0xE0) return; Reset(); return; } @@ -87,7 +91,6 @@ void cMarkAdPES2ES::Process(MarkAdPid Pid, uchar *PESData, int PESSize, uchar ** buf=&PESData[bpos]; buflen=PESSize-bpos; } - queue->Put(buf,buflen); } if (type) *ESData=queue->GetPacket(ESSize,type); |