From f19c46dfbcffd6d494a6df057bc602515a39246e Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 21 Mar 2007 17:34:47 -0400 Subject: [PATCH] [COVERITY] Fix memory leak in libss (ss_execute_line) Fix a memory leak by freeing the argv[] array if ss_parse_line returns 0 for argc 0 (which will happen if the user his return and sends an empty line to the application). Potentially need to free argv before early return since it was allocated memory. Need to be careful since it may be possible for ss_parse() to have freed the memory allocated to it if it detects an unbalanced set of quotes passed to it. Coverity ID: 21: Resource Leak Signed-off-by: Brian Behlendorf --- lib/ss/ChangeLog | 7 +++++++ lib/ss/execute_cmd.c | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ss/ChangeLog b/lib/ss/ChangeLog index 1bb4272a..ca8f941b 100644 --- a/lib/ss/ChangeLog +++ b/lib/ss/ChangeLog @@ -1,3 +1,10 @@ +2007-03-21 Theodore Tso + + * execute_cmd.c (ss_execute_line): Fix a memory leak by freeing + the argv[] array if ss_parse_line returns 0 for argc 0 + (which will happen if the user his return and sends an + empty line to the application). + 2007-03-19 Theodore Tso * help.c (ss_add_info_dir): Fix error checking for NULL parameter diff --git a/lib/ss/execute_cmd.c b/lib/ss/execute_cmd.c index 0f6a8c79..b9f2a4ef 100644 --- a/lib/ss/execute_cmd.c +++ b/lib/ss/execute_cmd.c @@ -220,8 +220,11 @@ int ss_execute_line (sci_idx, line_ptr) /* parse it */ argv = ss_parse(sci_idx, line_ptr, &argc); - if (argc == 0) + if (argc == 0) { + if (argv) + free(argv); return 0; + } /* look it up in the request tables, execute if found */ ret = really_execute_command (sci_idx, argc, &argv);