40 lines
1.2 KiB
Diff
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
|
|
|