From 1063b81639d1b8f53ce9048ef3772f63079f5f6c Mon Sep 17 00:00:00 2001 From: Frank Sehr Date: Wed, 19 Mar 2025 12:50:34 -0700 Subject: [PATCH] LU-18836 utils: lctl SIGSEGV in parser.c Added additional checks for NULL pointers in execute_line(). Test-Parameters: trivial Signed-off-by: Frank Sehr Change-Id: I0e470edadd3b4db4c47f0f42f52d34d541290224 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58468 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Cyril Bordage Reviewed-by: Manish Regmi Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- libcfs/libcfs/util/parser.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libcfs/libcfs/util/parser.c b/libcfs/libcfs/util/parser.c index 1d3c205..4bdce22 100644 --- a/libcfs/libcfs/util/parser.c +++ b/libcfs/libcfs/util/parser.c @@ -359,12 +359,18 @@ static int execute_line(char *line) fprintf(stderr, "No such command. Try --list-commands to see available commands.\n"); break; case CMD_INCOMPLETE: + if (cmd == NULL || cmd->pc_sub_cmd == NULL) { + fprintf(stderr, "'%s' incomplete command.\n", line); + return rc; + } + fprintf(stderr, - "'%s' incomplete command. Use '%s x' where x is one of:\n", + "'%s' incomplete command. Use '%s x' where x is one of:\n\t", line, line); - fprintf(stderr, "\t"); + for (i = 0; cmd->pc_sub_cmd[i].pc_name; i++) fprintf(stderr, "%s ", cmd->pc_sub_cmd[i].pc_name); + fprintf(stderr, "\n"); break; case CMD_COMPLETE: -- 1.8.3.1