From: Frank Sehr Date: Fri, 28 Feb 2025 21:49:59 +0000 (-0800) Subject: LU-18762 lnet: lst SIGSEGV in parser.c X-Git-Tag: 2.16.53~44 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F69%2F58269%2F2;p=fs%2Flustre-release.git LU-18762 lnet: lst SIGSEGV in parser.c A null pointer problem. Null pointer was passed instead of command structure array. Built in additional chack. Test-Parameters: trivial Signed-off-by: Frank Sehr Change-Id: I7d4e44170aeb8e44c55de681b6b3def781a0b1bd Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58269 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Reviewed-by: Cyril Bordage Reviewed-by: Manish Regmi Reviewed-by: Oleg Drokin --- diff --git a/libcfs/libcfs/util/parser.c b/libcfs/libcfs/util/parser.c index 08dfe8f..1d3c205 100644 --- a/libcfs/libcfs/util/parser.c +++ b/libcfs/libcfs/util/parser.c @@ -147,6 +147,9 @@ int cfs_parser(int argc, char **argv, command_t cmds[]) done = 0; + if (cmds == NULL) + return -ENOENT; + for (cmd = override_cmdlist; cmd->pc_name && i < MAXCMDS; cmd++) top_level[i++] = *cmd; diff --git a/lnet/utils/lst.c b/lnet/utils/lst.c index 71a6d7c..abb167b 100644 --- a/lnet/utils/lst.c +++ b/lnet/utils/lst.c @@ -34,6 +34,8 @@ #include #include "lnetconfig/liblnetconfig.h" +static void lst_print_usage(char *cmd); + static int lst_info_batch_ioctl(char *batch, int test, int server, struct lstcon_test_batch_ent *entp, int *idxp, int *ndentp, struct lstcon_node_ent *dentsp); @@ -329,14 +331,6 @@ lst_test_name2type(char *name) } static void -lst_print_usage(char *cmd) -{ - char *argv[] = { "help", cmd }; - - cfs_parser(2, argv, NULL); -} - -static void lst_print_error(char *sub, const char *def_format, ...) { va_list ap; @@ -3930,6 +3924,14 @@ lst_initialize(void) return 0; } +static void +lst_print_usage(char *cmd) +{ + char *argv[] = { "help", cmd }; + + cfs_parser(2, argv, lst_cmdlist); +} + int main(int argc, char **argv) { int rc = 0;