diff options
| author | Xin LI <delphij@FreeBSD.org> | 2020-03-21 19:13:22 +0000 |
|---|---|---|
| committer | Xin LI <delphij@FreeBSD.org> | 2020-03-21 19:13:22 +0000 |
| commit | b89a9714932b4fb6d8aec10dc79b7ecf9a9ce536 (patch) | |
| tree | 02eb67059a2125bda85edbc6e386d53bea49d67e /src/liblzma/common/common.c | |
| parent | 9657691eff9c78f404f3f9d5907240d267893826 (diff) | |
Notes
Diffstat (limited to 'src/liblzma/common/common.c')
| -rw-r--r-- | src/liblzma/common/common.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/liblzma/common/common.c b/src/liblzma/common/common.c index 57e3f8ebd62a..cf714e5e43b4 100644 --- a/src/liblzma/common/common.c +++ b/src/liblzma/common/common.c @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -/// \file common.h +/// \file common.c /// \brief Common functions needed in many places in liblzma // // Author: Lasse Collin @@ -99,7 +99,11 @@ lzma_bufcpy(const uint8_t *restrict in, size_t *restrict in_pos, const size_t out_avail = out_size - *out_pos; const size_t copy_size = my_min(in_avail, out_avail); - memcpy(out + *out_pos, in + *in_pos, copy_size); + // Call memcpy() only if there is something to copy. If there is + // nothing to copy, in or out might be NULL and then the memcpy() + // call would trigger undefined behavior. + if (copy_size > 0) + memcpy(out + *out_pos, in + *in_pos, copy_size); *in_pos += copy_size; *out_pos += copy_size; |
