[truetype] Ignore invalid MVAR tags.
Reported as https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838 * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit warning for invalid tags. (tt_apply_mvar): Ignore invalid tags.
This commit is contained in:
parent
5eb0fd5e97
commit
447a0b6263
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2017-03-13 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
[truetype] Ignore invalid MVAR tags.
|
||||||
|
|
||||||
|
Reported as
|
||||||
|
|
||||||
|
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
|
||||||
|
|
||||||
|
* src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
|
||||||
|
warning for invalid tags.
|
||||||
|
(tt_apply_mvar): Ignore invalid tags.
|
||||||
|
|
||||||
2017-03-12 Werner Lemberg <wl@gnu.org>
|
2017-03-12 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
[truetype] Store and use design coordinates also.
|
[truetype] Store and use design coordinates also.
|
||||||
|
|
|
@ -1263,7 +1263,16 @@
|
||||||
FT_Short* p = ft_var_get_value_pointer( face, value->tag );
|
FT_Short* p = ft_var_get_value_pointer( face, value->tag );
|
||||||
|
|
||||||
|
|
||||||
value->unmodified = *p;
|
if ( p )
|
||||||
|
value->unmodified = *p;
|
||||||
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||||
|
else
|
||||||
|
FT_TRACE1(( "ft_var_load_mvar: Ignoring unknown tag `%c%c%c%c'\n",
|
||||||
|
(FT_Char)( value->tag >> 24 ),
|
||||||
|
(FT_Char)( value->tag >> 16 ),
|
||||||
|
(FT_Char)( value->tag >> 8 ),
|
||||||
|
(FT_Char)( value->tag ) ));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
face->variation_support |= TT_FACE_FLAG_VAR_MVAR;
|
face->variation_support |= TT_FACE_FLAG_VAR_MVAR;
|
||||||
|
@ -1320,17 +1329,20 @@
|
||||||
value->outerIndex,
|
value->outerIndex,
|
||||||
value->innerIndex );
|
value->innerIndex );
|
||||||
|
|
||||||
FT_TRACE5(( "value %c%c%c%c (%d units) adjusted by %d units (MVAR)\n",
|
if ( p )
|
||||||
(FT_Char)( value->tag >> 24 ),
|
{
|
||||||
(FT_Char)( value->tag >> 16 ),
|
FT_TRACE5(( "value %c%c%c%c (%d units) adjusted by %d units (MVAR)\n",
|
||||||
(FT_Char)( value->tag >> 8 ),
|
(FT_Char)( value->tag >> 24 ),
|
||||||
(FT_Char)( value->tag ),
|
(FT_Char)( value->tag >> 16 ),
|
||||||
value->unmodified,
|
(FT_Char)( value->tag >> 8 ),
|
||||||
delta ));
|
(FT_Char)( value->tag ),
|
||||||
|
value->unmodified,
|
||||||
|
delta ));
|
||||||
|
|
||||||
/* since we handle both signed and unsigned values as FT_Short, */
|
/* since we handle both signed and unsigned values as FT_Short, */
|
||||||
/* ensure proper overflow arithmetic */
|
/* ensure proper overflow arithmetic */
|
||||||
*p = (FT_Short)( value->unmodified + (FT_Short)delta );
|
*p = (FT_Short)( value->unmodified + (FT_Short)delta );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* adjust all derived values */
|
/* adjust all derived values */
|
||||||
|
|
Loading…
Reference in New Issue