All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] log: Correct missing free() on error in log_add_filter()
Date: Mon,  2 Apr 2018 02:42:39 -0600	[thread overview]
Message-ID: <20180402084240.252233-1-sjg@chromium.org> (raw)

If there is a problem with the parameters to log_add_filter(), the memory
allocated is currently not freed. Fix this.

Reported-by: Coverity (CID: 171962)

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 common/log.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/common/log.c b/common/log.c
index 680a60f86e..66d5e3ebf8 100644
--- a/common/log.c
+++ b/common/log.c
@@ -224,6 +224,7 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
 {
 	struct log_filter *filt;
 	struct log_device *ldev;
+	int ret;
 	int i;
 
 	ldev = log_device_find_by_name(drv_name);
@@ -236,8 +237,10 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
 	if (cat_list) {
 		filt->flags |= LOGFF_HAS_CAT;
 		for (i = 0; ; i++) {
-			if (i == ARRAY_SIZE(filt->cat_list))
-				return -ENOSPC;
+			if (i == ARRAY_SIZE(filt->cat_list)) {
+				ret = -ENOSPC;
+				goto err;
+			}
 			filt->cat_list[i] = cat_list[i];
 			if (cat_list[i] == LOGC_END)
 				break;
@@ -246,17 +249,19 @@ int log_add_filter(const char *drv_name, enum log_category_t cat_list[],
 	filt->max_level = max_level;
 	if (file_list) {
 		filt->file_list = strdup(file_list);
-		if (!filt->file_list)
-			goto nomem;
+		if (!filt->file_list) {
+			ret = ENOMEM;
+			goto err;
+		}
 	}
 	filt->filter_num = ldev->next_filter_num++;
 	list_add_tail(&filt->sibling_node, &ldev->filter_head);
 
 	return filt->filter_num;
 
-nomem:
+err:
 	free(filt);
-	return -ENOMEM;
+	return ret;
 }
 
 int log_remove_filter(const char *drv_name, int filter_num)
-- 
2.17.0.rc1.321.gba9d0f2565-goog

             reply	other threads:[~2018-04-02  8:42 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-02  8:42 Simon Glass [this message]
2018-04-11 14:05 ` [U-Boot] log: Correct missing free() on error in log_add_filter() Tom Rini

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=20180402084240.252233-1-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.