Fix Savannah bug #30235.

* src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
invalid indices if there aren't any coordinates for indexing.
This commit is contained in:
Werner Lemberg 2010-06-24 08:20:56 +02:00
parent b21d7bc567
commit 3cf87f4d27
2 changed files with 11 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2010-06-24 Werner Lemberg <wl@gnu.org>
Fix Savannah bug #30235.
* src/pfr/pfrgload.c (pfr_glyph_load_simple): Protect against
invalid indices if there aren't any coordinates for indexing.
2010-06-24 Werner Lemberg <wl@gnu.org> 2010-06-24 Werner Lemberg <wl@gnu.org>
[bdf]: Font properties are optional. [bdf]: Font properties are optional.

View File

@ -388,7 +388,7 @@
case 2: /* horizontal line to */ case 2: /* horizontal line to */
FT_TRACE6(( "- horizontal line to cx.%d", format_low )); FT_TRACE6(( "- horizontal line to cx.%d", format_low ));
if ( format_low > x_count ) if ( format_low > x_count || x_count == 0 )
goto Failure; goto Failure;
pos[0].x = glyph->x_control[format_low]; pos[0].x = glyph->x_control[format_low];
pos[0].y = pos[3].y; pos[0].y = pos[3].y;
@ -398,7 +398,7 @@
case 3: /* vertical line to */ case 3: /* vertical line to */
FT_TRACE6(( "- vertical line to cy.%d", format_low )); FT_TRACE6(( "- vertical line to cy.%d", format_low ));
if ( format_low > y_count ) if ( format_low > y_count || y_count == 0 )
goto Failure; goto Failure;
pos[0].x = pos[3].x; pos[0].x = pos[3].x;
pos[0].y = glyph->y_control[format_low]; pos[0].y = glyph->y_control[format_low];
@ -440,7 +440,7 @@
case 0: /* 8-bit index */ case 0: /* 8-bit index */
PFR_CHECK( 1 ); PFR_CHECK( 1 );
idx = PFR_NEXT_BYTE( p ); idx = PFR_NEXT_BYTE( p );
if ( idx > x_count ) if ( idx > x_count || x_count == 0 )
goto Failure; goto Failure;
cur->x = glyph->x_control[idx]; cur->x = glyph->x_control[idx];
FT_TRACE7(( " cx#%d", idx )); FT_TRACE7(( " cx#%d", idx ));
@ -470,7 +470,7 @@
case 0: /* 8-bit index */ case 0: /* 8-bit index */
PFR_CHECK( 1 ); PFR_CHECK( 1 );
idx = PFR_NEXT_BYTE( p ); idx = PFR_NEXT_BYTE( p );
if ( idx > y_count ) if ( idx > y_count || y_count == 0 )
goto Failure; goto Failure;
cur->y = glyph->y_control[idx]; cur->y = glyph->y_control[idx];
FT_TRACE7(( " cy#%d", idx )); FT_TRACE7(( " cy#%d", idx ));