diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2024-02-29 17:55:08 -0800 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2024-03-09 23:53:37 -0800 |
commit | a8c321be84c6669256a2b6f1a3ff1e3eebc28594 (patch) | |
tree | e4ede84beb77764f226f1b7f6fe34ab715c0ce7b /deflate.c | |
parent | 72d6aa2672c91d10f8f58ee796ed8d44325faca4 (diff) | |
download | zlib-a8c321be84c6669256a2b6f1a3ff1e3eebc28594.tar.gz zlib-a8c321be84c6669256a2b6f1a3ff1e3eebc28594.tar.bz2 zlib-a8c321be84c6669256a2b6f1a3ff1e3eebc28594.zip |
Make deflateBound() more conservative and handle Z_STREAM_END.
Diffstat (limited to 'deflate.c')
-rw-r--r-- | deflate.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -846,13 +846,13 @@ uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { | |||
846 | storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + | 846 | storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + |
847 | (sourceLen >> 11) + 7; | 847 | (sourceLen >> 11) + 7; |
848 | 848 | ||
849 | /* if can't get parameters, return larger bound plus a zlib wrapper */ | 849 | /* if can't get parameters, return larger bound plus a wrapper */ |
850 | if (deflateStateCheck(strm)) | 850 | if (deflateStateCheck(strm)) |
851 | return (fixedlen > storelen ? fixedlen : storelen) + 6; | 851 | return (fixedlen > storelen ? fixedlen : storelen) + 18; |
852 | 852 | ||
853 | /* compute wrapper length */ | 853 | /* compute wrapper length */ |
854 | s = strm->state; | 854 | s = strm->state; |
855 | switch (s->wrap) { | 855 | switch (s->wrap < 0 ? -s->wrap : s->wrap) { |
856 | case 0: /* raw deflate */ | 856 | case 0: /* raw deflate */ |
857 | wraplen = 0; | 857 | wraplen = 0; |
858 | break; | 858 | break; |
@@ -882,7 +882,7 @@ uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { | |||
882 | break; | 882 | break; |
883 | #endif | 883 | #endif |
884 | default: /* for compiler happiness */ | 884 | default: /* for compiler happiness */ |
885 | wraplen = 6; | 885 | wraplen = 18; |
886 | } | 886 | } |
887 | 887 | ||
888 | /* if not default parameters, return one of the conservative bounds */ | 888 | /* if not default parameters, return one of the conservative bounds */ |