In tree(), we do not check whether malloc() returns NULL, it may cause potential Null pointer dereference problem. In addition, when we fail to list devices, we should free(out) before return. Signed-off-by: ZhiqiangLiu <lzhq28@xxxxxxxxxxxxxxxx> --- bcache.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bcache.c b/bcache.c index 044d401..1c4cef9 100644 --- a/bcache.c +++ b/bcache.c @@ -174,7 +174,7 @@ void replace_line(char **dest, const char *from, const char *to) int tree(void) { - char *out = (char *)malloc(4096); + char *out; const char *begin = ".\n"; const char *middle = "├─"; const char *tail = "└─"; @@ -184,8 +184,15 @@ int tree(void) INIT_LIST_HEAD(&head); int ret; + out = (char *)malloc(4096); + if (out == NULL) { + fprintf(stderr, "Error: fail to allocate memory buffer\n"); + return 1; + } + ret = list_bdevs(&head); if (ret != 0) { + free(out); fprintf(stderr, "Failed to list devices\n"); return ret; } -- 2.30.0