From c63d4ab80f407fd67e0b8497265f60904ce7ba7e Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 4 Oct 2007 22:18:48 +0000 Subject: [PATCH] Handle NULL value properly. --- cmd-set-option.c | 27 +++++++++++++++++---------- 1 file 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 @@ -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);