summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Adler <zlib@madler.net>2017-10-12 19:44:01 -0700
committerMark Adler <zlib@madler.net>2017-10-12 19:44:01 -0700
commit723e928b84b0adac84cc11ec5c075a45e1a79903 (patch)
tree5090ac2d115e17a71528780ad8efe70b74f907fa
parentb25d5fcdcf4723ca3da8bc69ecc6c52010778f7c (diff)
downloadzlib-723e928b84b0adac84cc11ec5c075a45e1a79903.tar.gz
Avoid an undefined behavior of memcpy() in _tr_stored_block().
Allegedly the behavior of memcpy() is undefined if the source pointer is NULL, even if the number of bytes to copy is zero.
-rw-r--r--trees.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/trees.c b/trees.c
index 50cf4b4..1321548 100644
--- a/trees.c
+++ b/trees.c
@@ -870,7 +870,8 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
bi_windup(s); /* align on byte boundary */
put_short(s, (ush)stored_len);
put_short(s, (ush)~stored_len);
- zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+ if (stored_len)
+ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
s->pending += stored_len;
#ifdef ZLIB_DEBUG
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;