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.
for storing the original display size when handling DVB subtitles
for reporting a problem with horizontal scaling of subtitles
for fixing a buffer overflow in cFont::Bidi()
Richard Robson <richard_robson@beeb.net>
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 a missing font deletion in cTrueColorDemo::Action() in the "osddemo" plugin
(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.
*
* $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"
@ -520,7 +520,7 @@ cString cFont::Bidi(const char *Ltr)
bool ok = fribidi_log2vis(Logical, RtlLen, &Base, Visual, NULL, NULL, NULL);
if (ok) {
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);
}
free(Logical);