From 8bb7722a5315fe9f176821242fd453fadb3004da Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Mon, 13 Jun 2022 15:09:36 -0400 Subject: [PATCH] [gzip] Handle inflate returning Z_NEED_DICT When `inflate` returns `Z_NEED_DICT` this is currently not reported as an error and callers may assume that the decompression succeeded when it did not. In particular, a compressed table in a woff file may not actually be decompressed and written as expected, leaving the backing memory for the expanded table uninitialized. * src/gzlip/ftgzip.c (FT_Gzip_Uncompress): treat `Z_NEED_DICT` as indicating invalid data since there is no means to provide a dictionary. Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1335712 --- src/gzip/ftgzip.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c index 34bbe4daf..915182e1f 100644 --- a/src/gzip/ftgzip.c +++ b/src/gzip/ftgzip.c @@ -790,6 +790,9 @@ if ( err == Z_DATA_ERROR ) return FT_THROW( Invalid_Table ); + if ( err == Z_NEED_DICT ) + return FT_THROW( Invalid_Table ); + return FT_Err_Ok; }