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

