From 15bba0c7d4107ae4b3f7f5768ff285144735cd5f Mon Sep 17 00:00:00 2001 From: etobi Date: Mon, 19 Oct 2009 19:51:22 +0200 Subject: Fixed possible segfault (Closes #179) - (Thx to Manuel Reimer) --- HISTORY | 1 + txtrecv.c | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/HISTORY b/HISTORY index c61e0e6..2a1a911 100644 --- a/HISTORY +++ b/HISTORY @@ -4,6 +4,7 @@ VDR Plugin 'osdteletext' Revision History 20xx-xx-xx: version x.x.x - Updated Italian translation provided by Diego Pierotto (Closes #151) - Fix valid page number check in TeletextBrowser::ExecuteAction (Closes #154) +- Fixed possible segfault (Closes #179) - (Thx to Manuel Reimer) 2009-06-02: version 0.8.3 - Updated Ukrainian translation provided by Yarema P. aka Knedlyk (Closes #133) diff --git a/txtrecv.c b/txtrecv.c index 19bec60..dadd6b1 100644 --- a/txtrecv.c +++ b/txtrecv.c @@ -583,14 +583,12 @@ void cTxtReceiver::Activate(bool On) void cTxtReceiver::Receive(uchar *Data, int Length) { - int len = Length+60; - - if (!buffer.Check(len)) { + if (!buffer.Check(Length)) { // Buffer overrun buffer.Signal(); return; } - cFrame *frame=new cFrame(Data, len); + cFrame *frame=new cFrame(Data, Length); if (frame && !buffer.Put(frame)) { // Buffer overrun delete frame; -- cgit v1.2.3 From a5a7762f7efae92b11a956d7d7192126c89eda54 Mon Sep 17 00:00:00 2001 From: etobi Date: Tue, 20 Oct 2009 20:34:16 +0200 Subject: Removed extra buffer check Put() already does this --- txtrecv.c | 7 +------ txtrecv.h | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/txtrecv.c b/txtrecv.c index dadd6b1..1d4c66a 100644 --- a/txtrecv.c +++ b/txtrecv.c @@ -583,13 +583,8 @@ void cTxtReceiver::Activate(bool On) void cTxtReceiver::Receive(uchar *Data, int Length) { - if (!buffer.Check(Length)) { - // Buffer overrun - buffer.Signal(); - return; - } cFrame *frame=new cFrame(Data, Length); - if (frame && !buffer.Put(frame)) { + if (!buffer.Put(frame)) { // Buffer overrun delete frame; buffer.Signal(); diff --git a/txtrecv.h b/txtrecv.h index ec274ea..cebf375 100644 --- a/txtrecv.h +++ b/txtrecv.h @@ -157,7 +157,6 @@ class cRingTxtFrames : public cRingBufferFrame { ~cRingTxtFrames() { Clear(); }; void Wait(void) { WaitForGet(); }; void Signal(void) { EnableGet(); }; - bool Check(int Size) { return (Free() >= Size); }; }; class cTxtReceiver : public cReceiver, public cThread { -- cgit v1.2.3