libevent/backport-evutil-don-t-call-memset-before-memcpy.patch
shixuantong 2d4f7650c0 evutil: don't call memset before memcpy
(cherry picked from commit 76df883b3a365e65058da1888b7738e72ace7956)
2024-04-01 14:15:52 +08:00

40 lines
1.2 KiB
Diff

From 39073df8318364fc868ab6d90a345ea4fc66e864 Mon Sep 17 00:00:00 2001
From: Liu Dongmiao <liudongmiao@gmail.com>
Date: Sat, 30 Mar 2024 21:44:50 +0800
Subject: [PATCH] evutil: don't call memset before memcpy
In `evutil_parse_sockaddr_port`, it would `memset` the `out` to zero,
however, the `memset` is unnecessary before `memcpy`, and may cause
undefined behavior if the `outlen` is invalid.
This should close #1573.
Reference:https://github.com/libevent/libevent/commit/39073df8
---
evutil.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/evutil.c b/evutil.c
index 9817f08..cc0133f 100644
--- a/evutil.c
+++ b/evutil.c
@@ -2216,7 +2216,6 @@ evutil_parse_sockaddr_port(const char *ip_as_string, struct sockaddr *out, int *
if ((int)sizeof(sin6) > *outlen)
return -1;
sin6.sin6_scope_id = if_index;
- memset(out, 0, *outlen);
memcpy(out, &sin6, sizeof(sin6));
*outlen = sizeof(sin6);
return 0;
@@ -2235,7 +2234,6 @@ evutil_parse_sockaddr_port(const char *ip_as_string, struct sockaddr *out, int *
return -1;
if ((int)sizeof(sin) > *outlen)
return -1;
- memset(out, 0, *outlen);
memcpy(out, &sin, sizeof(sin));
*outlen = sizeof(sin);
return 0;
--
2.27.0