diff --git a/ChangeLog b/ChangeLog index 3afc3436a..f89194baf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-08-27 Nikhil Ramakrishnan + + [woff2] Minor. + + * src/sfnt/sfwoff2.c (woff2_uncompress): Add error message + (woff2_open_font): Free `uncompressed_buf'. + 2019-08-27 Nikhil Ramakrishnan [woff2] Uncompress Brotli streams and `face_index' support. diff --git a/src/sfnt/sfwoff2.c b/src/sfnt/sfwoff2.c index ec3060200..614c99b39 100644 --- a/src/sfnt/sfwoff2.c +++ b/src/sfnt/sfwoff2.c @@ -219,7 +219,10 @@ if( result != BROTLI_DECODER_RESULT_SUCCESS || uncompressed_size != dst_size ) + { + FT_ERROR(( "woff2_uncompress: Stream length mismatch.\n" )); return FT_THROW( Invalid_Table ); + } return FT_Err_Ok; @@ -498,7 +501,6 @@ } /* Collection directory reading complete. */ FT_TRACE2(( "WOFF2 collection dirtectory is valid.\n" )); - } first_table_offset = compute_first_table_offset( &woff2 ); @@ -506,7 +508,7 @@ woff2.compressed_offset = FT_STREAM_POS(); file_offset = ROUND4( woff2.compressed_offset + - woff2.totalCompressedSize ); + woff2.totalCompressedSize ); /* Few more checks before we start reading the tables. */ if( file_offset > woff2.length ) @@ -619,6 +621,7 @@ Exit: FT_FREE( tables ); FT_FREE( indices ); + FT_FREE( uncompressed_buf ); if( error ) {