Thread (6 messages) 6 messages, 3 authors, 2021-02-26

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help