From 2eee45ef966e5dc2b96998d692345f429a48cdea Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 11 Jul 2023 13:51:16 -0600 Subject: [PATCH] evlog_new: store a new copy of peeraddr, not a pointer to a buffer. Starting in sudo 1.9.14, eventlog_free() will free the peeraddr member too so it needs to be dynamically allocated. --- logsrvd/iolog_writer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/logsrvd/iolog_writer.c b/logsrvd/iolog_writer.c index 0eedf73b3..5808cb791 100644 --- a/logsrvd/iolog_writer.c +++ b/logsrvd/iolog_writer.c @@ -143,7 +143,10 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, } /* Client/peer IP address. */ - evlog->peeraddr = closure->ipaddr; + if ((evlog->peeraddr = strdup(closure->ipaddr)) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto bad; + } /* Submit time. */ if (submit_time != NULL) {