From: Yu Watanabe Date: Wed, 19 May 2021 12:21:28 +0000 (+0900) Subject: alloc-util: use memcpy_safe() in memdup() or friends X-Git-Tag: v249-rc1~196^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F19662%2Fhead;p=thirdparty%2Fsystemd.git alloc-util: use memcpy_safe() in memdup() or friends --- diff --git a/src/basic/alloc-util.c b/src/basic/alloc-util.c index bad15cc204c..192a516db32 100644 --- a/src/basic/alloc-util.c +++ b/src/basic/alloc-util.c @@ -17,8 +17,7 @@ void* memdup(const void *p, size_t l) { if (!ret) return NULL; - memcpy(ret, p, l); - return ret; + return memcpy_safe(ret, p, l); } void* memdup_suffix0(const void *p, size_t l) { @@ -35,8 +34,8 @@ void* memdup_suffix0(const void *p, size_t l) { if (!ret) return NULL; - *((uint8_t*) mempcpy(ret, p, l)) = 0; - return ret; + ((uint8_t*) ret)[l] = 0; + return memcpy_safe(ret, p, l); } void* greedy_realloc(void **p, size_t *allocated, size_t need, size_t size) { diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index 698a6583c5c..0c033213a7f 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -66,7 +66,7 @@ void* memdup_suffix0(const void *p, size_t l); /* We can't use _alloc_() here, s size_t _l_ = l; \ assert(_l_ <= ALLOCA_MAX); \ _q_ = alloca(_l_ ?: 1); \ - memcpy(_q_, p, _l_); \ + memcpy_safe(_q_, p, _l_); \ }) #define memdupa_suffix0(p, l) \ @@ -76,7 +76,7 @@ void* memdup_suffix0(const void *p, size_t l); /* We can't use _alloc_() here, s assert(_l_ <= ALLOCA_MAX); \ _q_ = alloca(_l_ + 1); \ ((uint8_t*) _q_)[_l_] = 0; \ - memcpy(_q_, p, _l_); \ + memcpy_safe(_q_, p, _l_); \ }) static inline void freep(void *p) {