From 6ac022dc750d95296a6f731b9594f2e751d997fa Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Thu, 1 Mar 2012 16:43:20 +0100 Subject: [PATCH] [bdf] Fix Savannah bug #35656. * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity of nibble characters instead of accessing `a2i' array. --- ChangeLog | 7 +++++++ src/bdf/bdflib.c | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 51c129e15..2dc9673d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-03-01 Werner Lemberg + + [bdf] Fix Savannah bug #35656. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) <_BDF_BITMAP>: Check validity + of nibble characters instead of accessing `a2i' array. + 2012-03-01 Werner Lemberg [winfonts] Fix Savannah bug #35659. diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c index fc635c9b4..6a66d1d1f 100644 --- a/src/bdf/bdflib.c +++ b/src/bdf/bdflib.c @@ -1746,7 +1746,7 @@ for ( i = 0; i < nibbles; i++ ) { c = line[i]; - if ( !c ) + if ( !isdigok( hdigits, c ) ) break; *bp = (FT_Byte)( ( *bp << 4 ) + a2i[c] ); if ( i + 1 < nibbles && ( i & 1 ) ) @@ -1769,9 +1769,9 @@ *bp &= nibble_mask[mask_index]; /* If any line has extra columns, indicate they have been removed. */ - if ( i == nibbles && - ( line[nibbles] == '0' || a2i[(int)line[nibbles]] != 0 ) && - !( p->flags & _BDF_GLYPH_WIDTH_CHECK ) ) + if ( i == nibbles && + isdigok( hdigits, line[nibbles] ) && + !( p->flags & _BDF_GLYPH_WIDTH_CHECK ) ) { FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG14, glyph->encoding )); p->flags |= _BDF_GLYPH_WIDTH_CHECK;