From: Tim Duesterhus Date: Sun, 3 Jan 2021 18:54:11 +0000 (+0100) Subject: BUG/MINOR: sink: Return an allocation failure in __sink_new if strdup() fails X-Git-Tag: v2.4-dev5~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7ebffef660c2c83590798e0f1acceb9001ff92c;p=thirdparty%2Fhaproxy.git BUG/MINOR: sink: Return an allocation failure in __sink_new if strdup() fails This patch fixes GitHub issue #1023. The function was introduced in commit 99c453d ("MEDIUM: ring: new section ring to declare custom ring buffers."), which first appeared in 2.2-dev9. The fix should be backported to 2.2+. --- diff --git a/src/sink.c b/src/sink.c index 35bf7707c4..15fc47597e 100644 --- a/src/sink.c +++ b/src/sink.c @@ -63,7 +63,13 @@ static struct sink *__sink_new(const char *name, const char *desc, int fmt) goto end; sink->name = strdup(name); + if (!sink->name) + goto err; + sink->desc = strdup(desc); + if (!sink->desc) + goto err; + sink->fmt = fmt; sink->type = SINK_TYPE_NEW; sink->maxlen = BUFSIZE; @@ -74,6 +80,13 @@ static struct sink *__sink_new(const char *name, const char *desc, int fmt) LIST_ADDQ(&sink_list, &sink->sink_list); end: return sink; + + err: + free(sink->name); sink->name = NULL; + free(sink->desc); sink->desc = NULL; + free(sink); sink = NULL; + + return NULL; } /* creates a sink called of type FD associated to fd , format ,