From 3fb251b363866417122fe54a158a1ac5a7837101 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Wed, 21 Sep 2016 20:07:37 -0700 Subject: [PATCH] Remove dummy structure declarations for old buggy compilers. While woolly mammoths still roamed the Earth and before Atlantis sunk into the ocean, there were C compilers that could not handle forward structure references, e.g. "struct name;". zlib dutifully provided a work-around for such compilers. That work-around is no longer needed, and, per the recommendation of a security audit of the zlib code by Trail of Bits and TrustInSoft, in support of the Mozilla Foundation, should be removed since what a compiler will do with this is technically undefined. From the report: "there is no telling what interactions the bug could have in the future with link-time optimizations and type-based alias analyses, both features that are present (but not default) in clang." --- deflate.c | 4 ---- zconf.h | 5 ----- zconf.h.cmakein | 5 ----- zconf.h.in | 5 ----- zlib.h | 5 ----- zutil.c | 4 ---- 6 files changed, 28 deletions(-) diff --git a/deflate.c b/deflate.c index daab31a..804189d 100644 --- a/deflate.c +++ b/deflate.c @@ -151,10 +151,6 @@ local const config configuration_table[10] = { #define EQUAL 0 /* result of memcmp for equal strings */ -#ifndef NO_DUMMY_DECL -struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ -#endif - /* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ #define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) diff --git a/zconf.h b/zconf.h index 9987a77..0a4828e 100644 --- a/zconf.h +++ b/zconf.h @@ -224,11 +224,6 @@ # define z_const #endif -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K diff --git a/zconf.h.cmakein b/zconf.h.cmakein index 043019c..752eb88 100644 --- a/zconf.h.cmakein +++ b/zconf.h.cmakein @@ -226,11 +226,6 @@ # define z_const #endif -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K diff --git a/zconf.h.in b/zconf.h.in index 9987a77..0a4828e 100644 --- a/zconf.h.in +++ b/zconf.h.in @@ -224,11 +224,6 @@ # define z_const #endif -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K diff --git a/zlib.h b/zlib.h index 67cfd7e..571847e 100644 --- a/zlib.h +++ b/zlib.h @@ -1759,11 +1759,6 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ #endif /* !Z_SOLO */ -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - /* undocumented functions */ ZEXTERN const char * ZEXPORT zError OF((int)); ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); diff --git a/zutil.c b/zutil.c index 167ed5f..a6b887e 100644 --- a/zutil.c +++ b/zutil.c @@ -10,10 +10,6 @@ # include "gzguts.h" #endif -#ifndef NO_DUMMY_DECL -struct internal_state {int dummy;}; /* for buggy compilers */ -#endif - z_const char * const z_errmsg[10] = { "need dictionary", /* Z_NEED_DICT 2 */ "stream end", /* Z_STREAM_END 1 */