cli: check for null in is_server_debug_xlator()

Command: gluster volume set <volname> diagnostics.client-log-level trace
Expected output:
"volume set: failed: option log-level trace: 'trace' is not valid
(possible options are DEBUG, WARNING, ERROR, INFO, CRITICAL, NONE,
TRACE.)"
Current output: gluster cli receives a segmentation fault
Fix: check for NULL before calling strstr

Change-Id: If4c7a85a635849a388cf122543e12349c109643c
BUG: 982174
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/5298
Reviewed-by: Kaushal M <kaushal@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
This commit is contained in:
Ravishankar N 2013-07-08 15:45:54 +05:30 committed by Vijay Bellur
parent ec64f13476
commit 07833f13d4
2 changed files with 38 additions and 0 deletions

View File

@ -1545,6 +1545,8 @@ is_server_debug_xlator (void *myframe)
key = *words;
words++;
value = *words;
if (value == NULL)
break;
if (strstr (value, "client")) {
words++;
continue;

36
tests/bugs/bug-982174.t Normal file
View File

@ -0,0 +1,36 @@
#!/bin/bash
# Test to check
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
#Check if incorrect log-level keywords does not crash the CLI
cleanup;
TEST glusterd
TEST pidof glusterd
TEST $CLI volume create $V0 $H0:$B0/brick1 $H0:$B0/brick2
TEST $CLI volume start $V0
function set_log_level_status {
local level=$1
$CLI volume set $V0 diagnostics.client-log-level $level 2>&1 |grep -oE 'success|failed'
}
LOG_LEVEL="trace"
EXPECT "failed" set_log_level_status $LOG_LEVEL
LOG_LEVEL="error-gen"
EXPECT "failed" set_log_level_status $LOG_LEVEL
LOG_LEVEL="TRACE"
EXPECT "success" set_log_level_status $LOG_LEVEL
EXPECT "$LOG_LEVEL" echo `$CLI volume info | grep diagnostics | awk '{print $2}'`
TEST $CLI volume stop $V0;
TEST $CLI volume delete $V0;
cleanup;