summaryrefslogtreecommitdiffstats
path: root/cmd-set-option.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-10-04 22:18:48 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-10-04 22:18:48 +0000
commitc63d4ab80f407fd67e0b8497265f60904ce7ba7e (patch)
treef652e410557a1029273f4f6e1dc7b2302e059a3f /cmd-set-option.c
parent26b340964a55f754a3001c18598f670d20578777 (diff)
Handle NULL value properly.
Diffstat (limited to 'cmd-set-option.c')
-rw-r--r--cmd-set-option.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/cmd-set-option.c b/cmd-set-option.c
index 2ead2752..7d229b4f 100644
--- a/cmd-set-option.c
+++ b/cmd-set-option.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-set-option.c,v 1.3 2007-10-04 22:04:01 nicm Exp $ */
+/* $Id: cmd-set-option.c,v 1.4 2007-10-04 22:18:48 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -102,17 +102,24 @@ cmd_set_option_exec(void *ptr, unused struct cmd_ctx *ctx)
return;
}
- number = strtonum(data->value, 0, UINT_MAX, &errstr);
-
- bool = -1;
- if (number == 1 ||
- strcmp(data->value, "on") == 0 || strcmp(data->value, "yes") == 0)
+ if (data->value != NULL) {
+ number = strtonum(data->value, 0, UINT_MAX, &errstr);
+
+ bool = -1;
+ if (number == 1 || strcmp(data->value, "on") == 0 ||
+ strcmp(data->value, "yes") == 0)
+ bool = 1;
+ if (number == 0 || strcmp(data->value, "off") == 0 ||
+ strcmp(data->value, "no") == 0)
+ bool = 0;
+ } else
bool = 1;
- if (number == 0 ||
- strcmp(data->value, "off") == 0 || strcmp(data->value, "no") == 0)
- bool = 0;
-
+
if (strcmp(data->option, "prefix") == 0) {
+ if (data->value == NULL) {
+ ctx->error(ctx, "invalid value");
+ return;
+ }
key = key_string_lookup_string(data->value);
if (key == KEYC_NONE) {
ctx->error(ctx, "unknown key: %s", data->value);