diff --git a/ChangeLog b/ChangeLog index a92daa50a..0bd8377d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2015-02-25 Werner Lemberg + + [gxvalid] Signedness fixes. + + * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c, + src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c, + src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c, + src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c, + src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c, + src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c, + src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply. + 2015-02-25 Werner Lemberg [cache] Signedness fixes. @@ -35,7 +47,7 @@ is a better choice for `hash' to hold a pointer than `FT_PtrDist' (a.k.a. `ptrdiff_t'), especially since the latter is signed, causing zillions of signedness warnings. [Note that `hash' was of - type `FT_UInt32' before the change to `FT_PtrDist.] + type `FT_UInt32' before the change to `FT_PtrDist'.] Update all users. * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c, diff --git a/src/gxvalid/gxvbsln.c b/src/gxvalid/gxvbsln.c index cc2021993..1b17a5d03 100644 --- a/src/gxvalid/gxvbsln.c +++ b/src/gxvalid/gxvbsln.c @@ -227,7 +227,7 @@ FT_INVALID_DATA; } else - gxv_ctlPoint_validate( stdGlyph, (FT_Short)ctlPoint, gxvalid ); + gxv_ctlPoint_validate( stdGlyph, ctlPoint, gxvalid ); } GXV_EXIT; diff --git a/src/gxvalid/gxvcommn.c b/src/gxvalid/gxvcommn.c index 8ee0ce1a2..93f6ffbe2 100644 --- a/src/gxvalid/gxvcommn.c +++ b/src/gxvalid/gxvcommn.c @@ -202,7 +202,7 @@ *max = (FT_Byte)FT_MAX( *max, val ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -231,7 +231,7 @@ *max = (FT_Byte)FT_MAX( *max, val ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -367,7 +367,7 @@ if ( *nUnits_p == 0 ) *nUnits_p = binSrchHeader.nUnits; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -449,7 +449,7 @@ gxvalid->lookupval_func( i, &value, gxvalid ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -486,7 +486,7 @@ p += unitSize; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -555,7 +555,7 @@ gxv_LookupTable_fmt2_skip_endmarkers( p, unitSize, gxvalid ); p += gxvalid->subtable_length; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -636,7 +636,7 @@ gxv_LookupTable_fmt2_skip_endmarkers( p, unitSize, gxvalid ); p += gxvalid->subtable_length; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -657,7 +657,7 @@ p += unitSize; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -709,7 +709,7 @@ gxv_LookupTable_fmt6_skip_endmarkers( p, unitSize, gxvalid ); p += gxvalid->subtable_length; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -746,7 +746,7 @@ gxvalid->lookupval_func( (FT_UShort)( firstGlyph + i ), &value, gxvalid ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -795,7 +795,7 @@ func( p, limit, gxvalid ); p += gxvalid->subtable_length; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -844,7 +844,7 @@ FT_LOCAL_DEF( void ) gxv_ctlPoint_validate( FT_UShort gid, - FT_Short ctl_point, + FT_UShort ctl_point, GXV_Validator gxvalid ) { FT_Face face; @@ -852,7 +852,7 @@ FT_GlyphSlot glyph; FT_Outline outline; - short n_points; + FT_UShort n_points; face = gxvalid->face; @@ -865,8 +865,7 @@ glyph = face->glyph; outline = glyph->outline; - n_points = outline.n_points; - + n_points = (FT_UShort)outline.n_points; if ( !( ctl_point < n_points ) ) FT_INVALID_DATA; @@ -1449,7 +1448,7 @@ GXV_TRACE(( "parsed: maxState=%d, maxEntry=%d\n", *maxState_p, *maxEntry_p )); - *length_p = p - table; + *length_p = (FT_ULong)( p - table ); GXV_EXIT; } @@ -1550,7 +1549,7 @@ } Exit: - *length_p = p - table; + *length_p = (FT_ULong)( p - table ); GXV_EXIT; } @@ -1605,7 +1604,7 @@ else setup_func = gxv_XStateTable_subtable_setup; - setup_func( limit - table, + setup_func( (FT_ULong)( limit - table ), classTable, stateArray, entryTable, diff --git a/src/gxvalid/gxvcommn.h b/src/gxvalid/gxvcommn.h index 9ec99560e..b24608c25 100644 --- a/src/gxvalid/gxvcommn.h +++ b/src/gxvalid/gxvcommn.h @@ -404,7 +404,7 @@ FT_BEGIN_HEADER FT_LOCAL( void ) gxv_ctlPoint_validate( FT_UShort gid, - FT_Short ctl_point, + FT_UShort ctl_point, GXV_Validator gxvalid ); diff --git a/src/gxvalid/gxvjust.c b/src/gxvalid/gxvjust.c index 8caa05bc4..add90d206 100644 --- a/src/gxvalid/gxvjust.c +++ b/src/gxvalid/gxvjust.c @@ -121,7 +121,7 @@ GXV_SET_ERR_IF_PARANOID( FT_INVALID_DATA ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -143,7 +143,7 @@ p += gxvalid->subtable_length; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -168,7 +168,7 @@ p += gxvalid->subtable_length; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -192,8 +192,8 @@ GXV_LIMIT_CHECK( 4 + 4 + 2 + 2 ); - lowerLimit = FT_NEXT_ULONG( p ); - upperLimit = FT_NEXT_ULONG( p ); + lowerLimit = FT_NEXT_LONG( p ); + upperLimit = FT_NEXT_LONG( p ); #ifdef GXV_LOAD_UNUSED_VARS order = FT_NEXT_USHORT( p ); #else @@ -218,7 +218,7 @@ gxv_just_check_max_gid( glyphs, "type0:glyphs", gxvalid ); } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -236,7 +236,7 @@ gxv_just_check_max_gid( addGlyph, "type1:addGlyph", gxvalid ); - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -267,7 +267,7 @@ gxv_just_check_max_gid( substGlyph, "type2:substGlyph", gxvalid ); - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -285,11 +285,11 @@ GXV_LIMIT_CHECK( 4 + 4 + 4 + 4 ); variantsAxis = FT_NEXT_ULONG( p ); - minimumLimit = FT_NEXT_ULONG( p ); - noStretchValue = FT_NEXT_ULONG( p ); - maximumLimit = FT_NEXT_ULONG( p ); + minimumLimit = FT_NEXT_LONG( p ); + noStretchValue = FT_NEXT_LONG( p ); + maximumLimit = FT_NEXT_LONG( p ); - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); if ( variantsAxis != 0x64756374L ) /* 'duct' */ GXV_TRACE(( "variantsAxis 0x%08x is non default value", @@ -327,7 +327,7 @@ flags )); gxv_just_check_max_gid( glyph, "type5:glyph", gxvalid ); - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); } @@ -395,7 +395,7 @@ p += gxvalid->subtable_length; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -454,7 +454,7 @@ gxv_just_pcActionRecord_validate( p, limit, gxvalid ); p += gxvalid->subtable_length; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -677,7 +677,8 @@ format = FT_NEXT_USHORT( p ); horizOffset = FT_NEXT_USHORT( p ); vertOffset = FT_NEXT_USHORT( p ); - gxv_odtect_add_range( table, p - table, "just header", odtect ); + gxv_odtect_add_range( table, (FT_ULong)( p - table ), + "just header", odtect ); /* Version 1.0 (always:2000) */ diff --git a/src/gxvalid/gxvkern.c b/src/gxvalid/gxvkern.c index 1adb04e0e..f257c0376 100644 --- a/src/gxvalid/gxvkern.c +++ b/src/gxvalid/gxvkern.c @@ -549,7 +549,7 @@ } } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -779,7 +779,7 @@ #ifdef GXV_LOAD_TRACE_VARS version = 0; #endif - length = ( u16[0] << 16 ) + u16[1]; + length = ( (FT_ULong)u16[0] << 16 ) + u16[1]; #ifdef GXV_LOAD_TRACE_VARS tupleIndex = 0; #endif diff --git a/src/gxvalid/gxvlcar.c b/src/gxvalid/gxvlcar.c index 51db6760c..af589fdb6 100644 --- a/src/gxvalid/gxvlcar.c +++ b/src/gxvalid/gxvlcar.c @@ -66,7 +66,7 @@ /*************************************************************************/ static void - gxv_lcar_partial_validate( FT_UShort partial, + gxv_lcar_partial_validate( FT_Short partial, FT_UShort glyph, GXV_Validator gxvalid ) { @@ -75,7 +75,7 @@ if ( GXV_LCAR_DATA( format ) != 1 ) goto Exit; - gxv_ctlPoint_validate( glyph, partial, gxvalid ); + gxv_ctlPoint_validate( glyph, (FT_UShort)partial, gxvalid ); Exit: GXV_EXIT; @@ -203,7 +203,7 @@ GXV_INIT; GXV_LIMIT_CHECK( 4 + 2 ); - version = FT_NEXT_ULONG( p ); + version = FT_NEXT_LONG( p ); GXV_LCAR_DATA( format ) = FT_NEXT_USHORT( p ); if ( version != 0x00010000UL) diff --git a/src/gxvalid/gxvmort.c b/src/gxvalid/gxvmort.c index 042d0d1ea..a9e7a58fe 100644 --- a/src/gxvalid/gxvmort.c +++ b/src/gxvalid/gxvmort.c @@ -113,7 +113,7 @@ if ( !IS_GXV_MORT_FEATURE_OFF( f ) ) FT_INVALID_DATA; - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -214,7 +214,7 @@ /* TODO: validate subFeatureFlags */ } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } diff --git a/src/gxvalid/gxvmort1.c b/src/gxvalid/gxvmort1.c index f1012e2a0..aa02df5a9 100644 --- a/src/gxvalid/gxvmort1.c +++ b/src/gxvalid/gxvmort1.c @@ -156,7 +156,7 @@ setMark = (FT_UShort)( flags >> 15 ); dontAdvance = (FT_UShort)( ( flags >> 14 ) & 1 ); #endif - reserved = (FT_Short)( flags & 0x3FFF ); + reserved = (FT_UShort)( flags & 0x3FFF ); markOffset = (FT_Short)( glyphOffset_p->ul >> 16 ); currentOffset = (FT_Short)( glyphOffset_p->ul ); diff --git a/src/gxvalid/gxvmort2.c b/src/gxvalid/gxvmort2.c index 0775d0939..6f56c94ca 100644 --- a/src/gxvalid/gxvmort2.c +++ b/src/gxvalid/gxvmort2.c @@ -303,7 +303,7 @@ p += gxvalid->subtable_length; gxv_mort_subtable_type2_ligatureTable_validate( table, gxvalid ); - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } diff --git a/src/gxvalid/gxvmorx.c b/src/gxvalid/gxvmorx.c index 4dac12920..1c6b3f297 100644 --- a/src/gxvalid/gxvmorx.c +++ b/src/gxvalid/gxvmorx.c @@ -107,7 +107,7 @@ p += rest; } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } diff --git a/src/gxvalid/gxvmorx1.c b/src/gxvalid/gxvmorx1.c index 6f4e67f04..7ba290914 100644 --- a/src/gxvalid/gxvmorx1.c +++ b/src/gxvalid/gxvmorx1.c @@ -149,11 +149,11 @@ if ( optdata->substitutionTable_num_lookupTables < markIndex + 1 ) optdata->substitutionTable_num_lookupTables = - (FT_Short)( markIndex + 1 ); + (FT_UShort)( markIndex + 1 ); if ( optdata->substitutionTable_num_lookupTables < currentIndex + 1 ) optdata->substitutionTable_num_lookupTables = - (FT_Short)( currentIndex + 1 ); + (FT_UShort)( currentIndex + 1 ); } diff --git a/src/gxvalid/gxvmorx2.c b/src/gxvalid/gxvmorx2.c index bc5fef8c4..51e305580 100644 --- a/src/gxvalid/gxvmorx2.c +++ b/src/gxvalid/gxvmorx2.c @@ -189,7 +189,8 @@ /* it is different from the location offset in mort */ if ( ( offset & 0x3FFF0000UL ) == 0x3FFF0000UL ) { /* negative offset */ - gid_limit = gxvalid->face->num_glyphs - ( offset & 0x0000FFFFUL ); + gid_limit = gxvalid->face->num_glyphs - + (FT_Long)( offset & 0x0000FFFFUL ); if ( gid_limit > 0 ) return; diff --git a/src/gxvalid/gxvopbd.c b/src/gxvalid/gxvopbd.c index 98ddd1314..7cd5163b1 100644 --- a/src/gxvalid/gxvopbd.c +++ b/src/gxvalid/gxvopbd.c @@ -91,7 +91,7 @@ if ( delta_value == -1 ) continue; - gxv_ctlPoint_validate( glyph, delta_value, gxvalid ); + gxv_ctlPoint_validate( glyph, (FT_UShort)delta_value, gxvalid ); } else /* format 0, value is distance */ continue; diff --git a/src/gxvalid/gxvprop.c b/src/gxvalid/gxvprop.c index 7f3930926..ecc3c94d2 100644 --- a/src/gxvalid/gxvprop.c +++ b/src/gxvalid/gxvprop.c @@ -279,7 +279,7 @@ GXV_INIT; GXV_LIMIT_CHECK( 4 + 2 + 2 ); - version = FT_NEXT_ULONG( p ); + version = FT_NEXT_LONG( p ); format = FT_NEXT_USHORT( p ); defaultProp = FT_NEXT_USHORT( p ); diff --git a/src/gxvalid/gxvtrak.c b/src/gxvalid/gxvtrak.c index a8074a2e9..cafc99ca5 100644 --- a/src/gxvalid/gxvtrak.c +++ b/src/gxvalid/gxvtrak.c @@ -135,7 +135,7 @@ } } - gxvalid->subtable_length = p - table; + gxvalid->subtable_length = (FT_ULong)( p - table ); GXV_EXIT; } @@ -162,7 +162,8 @@ nSizes = FT_NEXT_USHORT( p ); sizeTableOffset = FT_NEXT_ULONG( p ); - gxv_odtect_add_range( table, p - table, "trackData header", odtect ); + gxv_odtect_add_range( table, (FT_ULong)( p - table ), + "trackData header", odtect ); /* validate trackTable */ gxv_trak_trackTable_validate( p, limit, nTracks, gxvalid );