aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-05-02 00:45:03 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-05-02 00:45:03 +0000
commit027739a6da311d418dfae0cfe67161eec547c59a (patch)
tree31e4e6a2e7d9902614408a10919be3eec59336c4
parentaef2742bd336b662cbdd7ede7ce56a7077717635 (diff)
downloadmaster-187ad058-027739a6da311d418dfae0cfe67161eec547c59a.tar.gz
master-187ad058-027739a6da311d418dfae0cfe67161eec547c59a.tar.bz2
master-187ad058-027739a6da311d418dfae0cfe67161eec547c59a.zip
[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
-rw-r--r--package/nvram/Makefile2
-rw-r--r--package/nvram/src/cli.c38
2 files changed, 26 insertions, 14 deletions
diff --git a/package/nvram/Makefile b/package/nvram/Makefile
index 6ac11a9bef..f064b5fe3c 100644
--- a/package/nvram/Makefile
+++ b/package/nvram/Makefile
@@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=nvram
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/package/nvram/src/cli.c b/package/nvram/src/cli.c
index 953910cd68..44d4b88fde 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") )
{