From a7ebffef660c2c83590798e0f1acceb9001ff92c Mon Sep 17 00:00:00 2001 From: Tim Duesterhus Date: Sun, 3 Jan 2021 19:54:11 +0100 Subject: [PATCH] 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+. --- src/sink.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/sink.c b/src/sink.c index 35bf770..15fc475 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 , -- 1.7.10.4