26 lines
1.2 KiB
Diff
26 lines
1.2 KiB
Diff
From af013cf65867e3589f6da714eefc69d9f986bb91 Mon Sep 17 00:00:00 2001
|
|
From: Nathan Moinvaziri <nathan@nathanm.com>
|
|
Date: Mon, 9 Sep 2024 13:32:33 -0700
|
|
Subject: [PATCH] Don't use chunkunroll for inflateBack
|
|
|
|
If the output buffer and the window buffer are the same
|
|
memory allocation, we cannot make the assumptions that chunkunroll
|
|
does, that it is okay to overwrite the output buffer.
|
|
---
|
|
inffast_tpl.h | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/inffast_tpl.h b/inffast_tpl.h
|
|
index 9ddd187d84..c8f4786754 100644
|
|
--- a/inffast_tpl.h
|
|
+++ b/inffast_tpl.h
|
|
@@ -249,7 +249,8 @@ void Z_INTERNAL INFLATE_FAST(PREFIX3(stream) *strm, uint32_t start) {
|
|
if (op < len) { /* still need some from output */
|
|
len -= op;
|
|
out = chunkcopy_safe(out, from, op, safe);
|
|
- out = CHUNKUNROLL(out, &dist, &len);
|
|
+ if (!extra_safe)
|
|
+ out = CHUNKUNROLL(out, &dist, &len);
|
|
out = chunkcopy_safe(out, out - dist, len, safe);
|
|
} else {
|
|
out = chunkcopy_safe(out, from, len, safe);
|