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 /src/bdf | |
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.
Diffstat (limited to 'src/bdf')
-rw-r--r-- | src/bdf/bdflib.c | 12 |
1 files changed, 3 insertions, 9 deletions
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; |