vdr 1.5.16 - minor problem in font.c

Message ID 47C74C01.40301@e-tobi.net
State New

Commit Message

Tobias Grimm Feb. 29, 2008, 12:04 a.m. UTC

DrawText() in font.c uses the method Glyph() which may return a null pointer,
but doesn't check the returned pointer.

I came across this bug, when checking a bug report from Sven Mueller:


When info.vdr contains an invalid character (like in the above example a 0xA0 -
a Latin-1 NO-BREAK SPACE),  Glyph() returns null, which then causes a segfault
when dereferencing the null-pointer.

The easiest way to fix this, would probably be to ignore such invalid
characters, which is, what the attached two-line-patch will do. But maybe it's
better to replace such characters with a default character - maybe a space or a '?'.


#! /bin/sh /usr/share/dpatch/dpatch-run
## 99_invalid-char-fix.dpatch by Tobias Grimm <tg@e-tobi.net>
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.



diff -urNad vdr-1.5.16~/font.c vdr-1.5.16/font.c
--- vdr-1.5.16~/font.c	2008-02-09 12:52:25.000000000 +0100
+++ vdr-1.5.16/font.c	2008-02-29 00:50:55.000000000 +0100
@@ -258,6 +258,8 @@ 
            uint sym = Utf8CharGet(s, sl);
            s += sl;
            cGlyph *g = Glyph(sym, AntiAliased);
+           if (!g)
+              continue;
            int kerning = Kerning(g, prevSym);
            prevSym = sym;
            uchar *buffer = g->Bitmap();