Re: [PATCH] debugfs: fix memory leak problem in read_list()
From: harshad shirwadkar <hidden>
Date: 2021-02-25 15:52:19
On Sat, Feb 20, 2021 at 12:41 AM Zhiqiang Liu [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In read_list func, if strtoull() fails in while loop, we will return the error code directly. Then, memory of variable lst will be leaked without setting to *list. Signed-off-by: Zhiqiang Liu <redacted> Signed-off-by: linfeilong <redacted> --- debugfs/util.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)diff --git a/debugfs/util.c b/debugfs/util.c index be6b550e..9e880548 100644 --- a/debugfs/util.c +++ b/debugfs/util.c@@ -530,12 +530,16 @@ errcode_t read_list(char *str, blk64_t **list, size_t *len) errno = 0; y = x = strtoull(tok, &e, 0); - if (errno) - return errno; + if (errno) { + retval = errno; + break; + }
Shouldn't we have `goto err;` here instead of break? strtoull failure here indicates that no valid value was found, so instead of returning the allocated memory, we should just free the memory and return error. - Harshad
if (*e == '-') {
y = strtoull(e + 1, NULL, 0);
- if (errno)
- return errno;
+ if (errno) {
+ retval = errno;
+ break;
+ }
} else if (*e != 0) {
retval = EINVAL;
break;
--
2.19.1