Commit 2e58808d4850f2a2d4d126974bc7d6f83499ce90

Werner Lemberg 2017-10-05T14:26:33

Fix compiler warnings. * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies on numeric overflow. Add cast. * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable types, add cast.

diff --git a/ChangeLog b/ChangeLog
index b30c3b9..1890cbf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-10-05  Werner Lemberg  <wl@gnu.org>
+
+	Fix compiler warnings.
+
+	* src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
+	on numeric overflow.
+	Add cast.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
+	types, add cast.
+
 2017-10-04  John Tytgat  <John.Tytgat@esko.com>
 
 	[cff] Add support for `FSType'.
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index e761409..906d315 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -515,7 +515,7 @@
       if ( FT_ALLOC( font_extra, sizeof ( *font_extra ) ) )
         goto Fail;
 
-      font_extra->fs_type = 0u;
+      font_extra->fs_type = 0U;
 
       embedded_postscript = cff_index_get_sid_string(
                               cff,
@@ -542,17 +542,15 @@
           {
             if ( *s >= '0' && *s <= '9' )
             {
-              FT_UShort  prev_fs_type;
-
-
-              prev_fs_type        = font_extra->fs_type;
-              font_extra->fs_type = 10 * font_extra->fs_type + *s - '0';
-              if ( font_extra->fs_type < prev_fs_type )
+              if ( font_extra->fs_type >= ( FT_USHORT_MAX - 9 ) / 10 )
               {
                 /* Overflow - ignore the FSType value.  */
                 font_extra->fs_type = 0U;
                 break;
               }
+
+              font_extra->fs_type *= 10;
+              font_extra->fs_type += (FT_UShort)( *s - '0' );
             }
             else if ( *s != ' ' && *s != '\n' && *s != '\r' )
             {
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index 938d295..8262746 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -229,7 +229,7 @@
     {
       FT_Byte*  line;
       FT_Byte*  temp;
-      FT_Int    i, j;
+      FT_UInt   i, j;
 
       unsigned int  height = bitmap->rows;
       unsigned int  width  = bitmap->width;
@@ -270,7 +270,7 @@
 
       for ( i = 0; i < height; i++ )
       {
-        line = bitmap->buffer + i * pitch;
+        line = bitmap->buffer + i * (FT_ULong)pitch;
         for ( j = 0; j < width; j++ )
         {
           temp[3 * j    ] = line[j];