From c11caab8aa7f1e296694e2eaa4477d299adcd1e6 Mon Sep 17 00:00:00 2001 From: Jochen Dolze Date: Tue, 6 Oct 2009 00:36:26 +0200 Subject: Fixed TS packet processing (buffer overflows) Added packet injection --- tools.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'tools.cpp') diff --git a/tools.cpp b/tools.cpp index 6828216..6c4edc5 100644 --- a/tools.cpp +++ b/tools.cpp @@ -26,6 +26,36 @@ cMarkAdPaketQueue::~cMarkAdPaketQueue() if (buffer) free(buffer); } +bool cMarkAdPaketQueue::Inject(uchar *Data, int Size) +{ + if (!buffer) return false; + if (outptr>Size) + { + uchar temp[Size+1]; + memcpy(temp,Data,Size); + outptr-=Size; + memcpy(&buffer[outptr],temp,Size); + pktinfo.pkthdr=-1; + } + else + { + int oldSize=Length(); + uchar tempold[oldSize+1]; + memcpy(tempold,&buffer[outptr],oldSize); + + uchar temp[Size+1]; + memcpy(temp,Data,Size); + + memcpy(buffer,temp,Size); + memcpy(buffer+Size,tempold,oldSize); + + inptr=Size+oldSize; + outptr=0; + pktinfo.pkthdr=-1; + } + return true; +} + bool cMarkAdPaketQueue::Put(uchar *Data, int Size) { if (!buffer) return false; -- cgit v1.2.3