From: Andreas Henriksson <andreas@fatal.se>
To: util-linux@vger.kernel.org
Cc: Andreas Henriksson <andreas@fatal.se>
Subject: [PATCH] lib/colors: fix double free on error path
Date: Wed, 19 Nov 2014 12:03:35 +0100 [thread overview]
Message-ID: <1416395016-17902-1-git-send-email-andreas@fatal.se> (raw)
The error path was a bit unclear on the semantics. The seq argument
would get freed but not the name argument. Then the caller frees
them both when the function returns an error.
This fixes the problem my making the function not touch the arguments
unless we're going to return success. Also improve the description
for this function to make it more obvious what the callers should expect.
Addresses: CID#77487 (on scan.coverity.com for JIghtuse/util-linux)
Signed-off-by: Andreas Henriksson <andreas@fatal.se>
---
lib/colors.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/lib/colors.c b/lib/colors.c
index fb7d4b2..ab62c56 100644
--- a/lib/colors.c
+++ b/lib/colors.c
@@ -438,8 +438,9 @@ static int cn_sequence(const char *str, char **seq)
/*
- * Adds one color sequence to array with color scheme,
- * @seq and @name have to be allocated strings
+ * Adds one color sequence to array with color scheme.
+ * When returning success (0) this function takes ownership of
+ * @seq and @name, which have to be allocated strings.
*/
static int colors_add_scheme(struct ul_color_ctl *cc,
char *name,
@@ -455,7 +456,6 @@ static int colors_add_scheme(struct ul_color_ctl *cc,
DBG(SCHEME, ul_debug("add '%s'", name));
rc = cn_sequence(seq0, &seq);
- free(seq0);
if (rc)
return rc;
@@ -485,6 +485,8 @@ static int colors_add_scheme(struct ul_color_ctl *cc,
cc->schemes_sz = cc->nschemes + 10;
}
+ free(seq0);
+
/* add a new item */
cs = &cc->schemes[cc->nschemes++];
cs->name = name;
--
2.1.3
next reply other threads:[~2014-11-19 11:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-19 11:03 Andreas Henriksson [this message]
2014-11-19 13:19 ` [PATCH] lib/colors: fix double free on error path Karel Zak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1416395016-17902-1-git-send-email-andreas@fatal.se \
--to=andreas@fatal.se \
--cc=util-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox