From 3feac1f51daab5bd00611a4605b2b658bd73c6e6 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Sat, 15 May 2021 23:43:33 +0900 Subject: [PATCH] Fixed #956. Called memcpy only if STR/BIN size > 0. --- include/msgpack/v1/unpack.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/msgpack/v1/unpack.hpp b/include/msgpack/v1/unpack.hpp index 35d59458..4f5dab47 100644 --- a/include/msgpack/v1/unpack.hpp +++ b/include/msgpack/v1/unpack.hpp @@ -171,7 +171,7 @@ inline void unpack_str(unpack_user& u, const char* p, uint32_t l, msgpack::objec o.via.str.ptr = p; u.set_referenced(true); } - else { + else if (l > 0) { if (l > u.limit().str()) throw msgpack::str_size_overflow("str size overflow"); char* tmp = static_cast(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char))); std::memcpy(tmp, p, l); @@ -187,7 +187,7 @@ inline void unpack_bin(unpack_user& u, const char* p, uint32_t l, msgpack::objec o.via.bin.ptr = p; u.set_referenced(true); } - else { + else if (l > 0) { if (l > u.limit().bin()) throw msgpack::bin_size_overflow("bin size overflow"); char* tmp = static_cast(u.zone().allocate_align(l, MSGPACK_ZONE_ALIGNOF(char))); std::memcpy(tmp, p, l);