[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1460474317-13235-3-git-send-email-mussitantesmortem@gmail.com>
Date: Tue, 12 Apr 2016 18:18:37 +0300
From: Maxim Zhukov <mussitantesmortem@...il.com>
To: Rob Herring <robh+dt@...nel.org>
Cc: Frank Rowand <frowand.list@...il.com>,
Grant Likely <grant.likely@...aro.org>,
linux-kernel@...r.kernel.org,
Maxim Zhukov <mussitantesmortem@...il.com>
Subject: [PATCH 2/2] scripts: dtc: fix memory leak after realloc
This commit fixed memory leak after errors realloc.
Signed-off-by: Maxim Zhukov <mussitantesmortem@...il.com>
---
scripts/dtc/fdtput.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/scripts/dtc/fdtput.c b/scripts/dtc/fdtput.c
index f2197f5..1042319 100644
--- a/scripts/dtc/fdtput.c
+++ b/scripts/dtc/fdtput.c
@@ -75,8 +75,9 @@ static int encode_value(struct display_info *disp, char **arg, int arg_count,
char *ptr; /* pointer to current value position */
int len; /* length of this cell/string/byte */
int ival;
- int upto; /* the number of bytes we have written to buf */
+ int upto; /* the number of bytes we have written to buf */
char fmt[3];
+ void *save_ptr = NULL; /* save pointer to realloc */
upto = 0;
@@ -96,12 +97,15 @@ static int encode_value(struct display_info *disp, char **arg, int arg_count,
/* enlarge our value buffer by a suitable margin if needed */
if (upto + len > value_size) {
value_size = (upto + len) + 500;
- value = realloc(value, value_size);
- if (!value) {
+ void *save_ptr = realloc(value, value_size);
+
+ if (!save_ptr) {
+ free(value);
fprintf(stderr, "Out of mmory: cannot alloc "
"%d bytes\n", value_size);
return -1;
}
+ value = save_ptr;
}
ptr = value + upto;
--
2.7.1.1.g3617aa0
Powered by blists - more mailing lists