aboutsummaryrefslogtreecommitdiff
path: root/deflate.c
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2024-02-29 17:55:08 -0800
committerMark Adler <madler@alumni.caltech.edu>2024-03-09 23:53:37 -0800
commita8c321be84c6669256a2b6f1a3ff1e3eebc28594 (patch)
treee4ede84beb77764f226f1b7f6fe34ab715c0ce7b /deflate.c
parent72d6aa2672c91d10f8f58ee796ed8d44325faca4 (diff)
downloadzlib-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.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/deflate.c b/deflate.c
index 10f1695..cbdd880 100644
--- a/deflate.c
+++ b/deflate.c
@@ -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 */