From a1dcc39e137bb68497cc421235f0a9669128c015 Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 2 May 2010 00:45:03 +0000 Subject: [package] nvram: fix crash when get, set or unset is invoked without argument (#7263) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21288 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/nvram/src/cli.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) (limited to 'package/nvram/src') diff --git a/package/nvram/src/cli.c b/package/nvram/src/cli.c index 953910cd6..44d4b88fd 100644 --- a/package/nvram/src/cli.c +++ b/package/nvram/src/cli.c @@ -165,20 +165,32 @@ int main( int argc, const char *argv[] ) stat = do_info(nvram); done++; } - else if( !strcmp(argv[i], "get") && ++i < argc ) + else if( !strcmp(argv[i], "get") || !strcmp(argv[i], "unset") || !strcmp(argv[i], "set") ) { - stat = do_get(nvram, argv[i]); - done++; - } - else if( !strcmp(argv[i], "unset") && ++i < argc ) - { - stat = do_unset(nvram, argv[i]); - done++; - } - else if( !strcmp(argv[i], "set") && ++i < argc ) - { - stat = do_set(nvram, argv[i]); - done++; + if( (i+1) < argc ) + { + switch(argv[i++][0]) + { + case 'g': + stat = do_get(nvram, argv[i]); + break; + + case 'u': + stat = do_unset(nvram, argv[i]); + break; + + case 's': + stat = do_set(nvram, argv[i]); + break; + } + done++; + } + else + { + fprintf(stderr, "Command '%s' requires an argument!\n", argv[i]); + done = 0; + break; + } } else if( !strcmp(argv[i], "commit") ) { -- cgit v1.2.3