diff --git a/ChangeLog b/ChangeLog index fd20d92ee..16a556818 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2019-09-25 Werner Lemberg + + * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes. + + Reported as + + https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17684 + 2019-09-23 Alexei Podtelezhnikov * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations. diff --git a/src/sfnt/sfwoff2.c b/src/sfnt/sfwoff2.c index bb7c9815b..7d9017938 100644 --- a/src/sfnt/sfwoff2.c +++ b/src/sfnt/sfwoff2.c @@ -2161,6 +2161,13 @@ goto Exit; } + if ( woff2.uncompressed_size > sfnt_size ) + { + FT_ERROR(( "woff2_open_font: SFNT table lengths are too large.\n" )); + error = FT_THROW( Invalid_Table ); + goto Exit; + } + /* Allocate memory for uncompressed table data. */ if ( FT_ALLOC( uncompressed_buf, woff2.uncompressed_size ) || FT_FRAME_ENTER( woff2.totalCompressedSize ) )