freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master 0f6be06: [bdf] Fix underflow of an unsigned value.


From: Armin
Subject: [freetype2] master 0f6be06: [bdf] Fix underflow of an unsigned value.
Date: Sun, 17 Jun 2018 14:28:51 -0400 (EDT)

branch: master
commit 0f6be0644422f57b4874825a48c3a9852b10ae59
Author: Armin Hasitzka <address@hidden>
Commit: Armin Hasitzka <address@hidden>

    [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.
---
 ChangeLog        | 11 +++++++++++
 src/bdf/bdflib.c | 12 +++---------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 05b1772..9bee9e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-06-17  Armin Hasitzka  <address@hidden>
+
+       [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  <address@hidden>
 
        [base] Add tracing for `FT_Bitmap_Blend'.
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 1b8d460..5c09591 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;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]