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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
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];