diff options
author | Armin Hasitzka <prince.cherusker@gmail.com> | 2018-06-17 20:27:42 +0200 |
---|---|---|
committer | Armin Hasitzka <prince.cherusker@gmail.com> | 2018-06-17 20:27:42 +0200 |
commit | 0f6be0644422f57b4874825a48c3a9852b10ae59 (patch) | |
tree | 9d94700f82342cc0144e1cfaee00040083b5b14d | |
parent | 19d8687f0b95e51daf729d51a4e154cd1b5efc1a (diff) | |
download | freetype2-0f6be0644422f57b4874825a48c3a9852b10ae59.tar.gz |
[bdf] Fix underflow of an unsigned value.
bdflib.c:1562 could be reached with `font->glyphs_used == 0'. That
caused an underflow of the unsigned value which results in undefined
behaviour.
* src/bdf/bdflib.c (src/bdf/bdflib.c): Bail out earlier than before
if the `ENCODING' keyword cannot be found.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/bdf/bdflib.c | 12 |
2 files changed, 14 insertions, 9 deletions
@@ -1,3 +1,14 @@ +2018-06-17 Armin Hasitzka <prince.cherusker@gmail.com> + + [bdf] Fix underflow of an unsigned value. + + bdflib.c:1562 could be reached with `font->glyphs_used == 0'. That + caused an underflow of the unsigned value which results in undefined + behaviour. + + * src/bdf/bdflib.c (src/bdf/bdflib.c): Bail out earlier than before + if the `ENCODING' keyword cannot be found. + 2018-06-17 Werner Lemberg <wl@gnu.org> [base] Add tracing for `FT_Bitmap_Blend'. diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c index 1b8d46069..5c0959132 100644 --- a/src/bdf/bdflib.c +++ b/src/bdf/bdflib.c @@ -1556,6 +1556,9 @@ goto Exit; } + if ( !( p->flags & BDF_ENCODING_ ) ) + goto Missing_Encoding; + /* Point at the glyph being constructed. */ if ( p->glyph_enc == -1 ) glyph = font->unencoded + ( font->unencoded_used - 1 ); @@ -1626,9 +1629,6 @@ /* Expect the SWIDTH (scalable width) field next. */ if ( _bdf_strncmp( line, "SWIDTH", 6 ) == 0 ) { - if ( !( p->flags & BDF_ENCODING_ ) ) - goto Missing_Encoding; - error = _bdf_list_split( &p->list, (char *)" +", line, linelen ); if ( error ) goto Exit; @@ -1642,9 +1642,6 @@ /* Expect the DWIDTH (scalable width) field next. */ if ( _bdf_strncmp( line, "DWIDTH", 6 ) == 0 ) { - if ( !( p->flags & BDF_ENCODING_ ) ) - goto Missing_Encoding; - error = _bdf_list_split( &p->list, (char *)" +", line, linelen ); if ( error ) goto Exit; @@ -1670,9 +1667,6 @@ /* Expect the BBX field next. */ if ( _bdf_strncmp( line, "BBX", 3 ) == 0 ) { - if ( !( p->flags & BDF_ENCODING_ ) ) - goto Missing_Encoding; - error = _bdf_list_split( &p->list, (char *)" +", line, linelen ); if ( error ) goto Exit; |