Fixed handling OSD areas that have invalid sizes

This commit is contained in:
Klaus Schmidinger 2005-12-18 12:58:31 +01:00
parent df13d22c6c
commit 7a0af2292c
4 changed files with 7 additions and 2 deletions

View File

@ -1256,6 +1256,7 @@ Marco Schl
for fixing initializing the day index when editing the weekday parameter of a for fixing initializing the day index when editing the weekday parameter of a
repeating timer repeating timer
for figuring out some obscure length bytes the the CA PMT Reply data of AlphaCrypt CAMs for figuring out some obscure length bytes the the CA PMT Reply data of AlphaCrypt CAMs
for fixing handling OSD areas that have invalid sizes
Jürgen Schmitz <j.schmitz@web.de> Jürgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP for reporting a bug in displaying the current channel when switching via the SVDRP

View File

@ -3986,3 +3986,4 @@ Video Disk Recorder Revision History
actually removing it (unless a new recording requires the disk space). actually removing it (unless a new recording requires the disk space).
- Fixed a possible crash when displaying the "Low disk space!" message from - Fixed a possible crash when displaying the "Low disk space!" message from
a background thread (thanks to Christof Steininger). a background thread (thanks to Christof Steininger).
- Fixed handling OSD areas that have invalid sizes (thanks to Marco Schlüßler).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbosd.c 1.27 2005/05/22 10:57:45 kls Exp $ * $Id: dvbosd.c 1.28 2005/12/18 12:56:55 kls Exp $
*/ */
#include "dvbosd.h" #include "dvbosd.h"
@ -88,6 +88,8 @@ eOsdError cDvbOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
return oeBppNotSupported; return oeBppNotSupported;
if ((Areas[i].Width() & (8 / Areas[i].bpp - 1)) != 0) if ((Areas[i].Width() & (8 / Areas[i].bpp - 1)) != 0)
return oeWrongAlignment; return oeWrongAlignment;
if (Areas[i].Width() < 1 || Areas[i].Height() < 1 || Areas[i].Width() > 720 || Areas[i].Height() > 576)
return oeWrongAreaSize;
TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp); TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp);
} }
if (TotalMemory > osdMem) if (TotalMemory > osdMem)

3
osd.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: osd.h 1.49 2005/06/19 10:35:25 kls Exp $ * $Id: osd.h 1.50 2005/12/18 12:56:21 kls Exp $
*/ */
#ifndef __OSD_H #ifndef __OSD_H
@ -37,6 +37,7 @@ enum eOsdError { oeOk,
oeAreasOverlap, oeAreasOverlap,
oeWrongAlignment, oeWrongAlignment,
oeOutOfMemory, oeOutOfMemory,
oeWrongAreaSize,
oeUnknown, oeUnknown,
}; };