summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Hasitzka <prince.cherusker@gmail.com>2018-06-17 20:27:42 +0200
committerArmin Hasitzka <prince.cherusker@gmail.com>2018-06-17 20:27:42 +0200
commit0f6be0644422f57b4874825a48c3a9852b10ae59 (patch)
tree9d94700f82342cc0144e1cfaee00040083b5b14d
parent19d8687f0b95e51daf729d51a4e154cd1b5efc1a (diff)
downloadfreetype2-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--ChangeLog11
-rw-r--r--src/bdf/bdflib.c12
2 files changed, 14 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 05b17723d..9bee9e4d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;