From 06f1878fb8ccb35e3b07569ecd1c2ead3a4bfbcf Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 1 Apr 2011 20:07:17 +0100 Subject: [PATCH] [cmdline] Fix "isset" command Commit b5f5f73 ("[cmdline] Expand settings within each command-line token individually") introduced a regression into the "isset" command: it is now possible for command-line arguments to be empty strings, and so "isset" cannot simply check for a non-empty argument list. Restore previous behaviour by checking for the presence of any non-empty arguments, rather than checking for a non-empty argument list. Reported-by: Nemtallah Daher Tested-by: Nemtallah Daher Signed-off-by: Michael Brown --- src/core/exec.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/exec.c b/src/core/exec.c index 8da288271..008083bc3 100644 --- a/src/core/exec.c +++ b/src/core/exec.c @@ -476,14 +476,20 @@ static struct command_descriptor isset_cmd = */ static int isset_exec ( int argc, char **argv ) { struct isset_options opts; + int i; int rc; /* Parse options */ if ( ( rc = parse_options ( argc, argv, &isset_cmd, &opts ) ) != 0 ) return rc; - /* Return success iff any arguments exist */ - return ( ( optind == argc ) ? -ENOENT : 0 ); + /* Return success if any argument is non-empty */ + for ( i = optind ; i < argc ; i++ ) { + if ( argv[i][0] != '\0' ) + return 0; + } + + return -ENOENT; } /** "isset" command */