1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed a buffer overflow in cFont::Bidi()

This commit is contained in:
Klaus Schmidinger 2011-03-28 16:30:37 +02:00
parent fa85bb7c01
commit 4b8fd4e1af
3 changed files with 4 additions and 2 deletions

View File

@ -1265,6 +1265,7 @@ Reinhard Nissl <rnissl@gmx.de>
debugging, and an implementation of the AlphaBlend() function. debugging, and an implementation of the AlphaBlend() function.
for storing the original display size when handling DVB subtitles for storing the original display size when handling DVB subtitles
for reporting a problem with horizontal scaling of subtitles for reporting a problem with horizontal scaling of subtitles
for fixing a buffer overflow in cFont::Bidi()
Richard Robson <richard_robson@beeb.net> Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the for reporting freezing replay if a timer starts while in Transfer Mode from the

View File

@ -6592,3 +6592,4 @@ Video Disk Recorder Revision History
- Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl). - Added Cancel(3) to ~cTrueColorDemo() in the "osddemo" plugin (thanks to Reinhard Nissl).
- Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin - Added a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
(thanks to Reinhard Nissl). (thanks to Reinhard Nissl).
- Fixed a buffer overflow in cFont::Bidi() (thanks to Reinhard Nissl).

4
font.c
View File

@ -6,7 +6,7 @@
* *
* BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya. * BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya.
* *
* $Id: font.c 2.7 2011/02/26 12:09:18 kls Exp $ * $Id: font.c 2.8 2011/03/28 16:29:51 kls Exp $
*/ */
#include "font.h" #include "font.h"
@ -520,7 +520,7 @@ cString cFont::Bidi(const char *Ltr)
bool ok = fribidi_log2vis(Logical, RtlLen, &Base, Visual, NULL, NULL, NULL); bool ok = fribidi_log2vis(Logical, RtlLen, &Base, Visual, NULL, NULL, NULL);
if (ok) { if (ok) {
fribidi_remove_bidi_marks(Visual, RtlLen, NULL, NULL, NULL); fribidi_remove_bidi_marks(Visual, RtlLen, NULL, NULL, NULL);
Rtl = MALLOC(char, RtlLen * 4); Rtl = MALLOC(char, RtlLen * 4 + 1);
fribidi_unicode_to_charset(fribidiCharset, Visual, RtlLen, Rtl); fribidi_unicode_to_charset(fribidiCharset, Visual, RtlLen, Rtl);
} }
free(Logical); free(Logical);