diff options
-rw-r--r-- | libglusterfs/src/common-utils.c | 8 | ||||
-rw-r--r-- | tests/bugs/bug-977246.t | 21 |
2 files changed, 29 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index b44c1d0b370..ab3674eadec 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -1784,6 +1784,14 @@ valid_host_name (char *address, int length) goto out; } + /* Check for consecutive dots, which is invalid in a hostname and is + * ignored by strtok() + */ + if (strstr (dup_addr, "..")) { + ret = 0; + goto out; + } + /* gen-name */ temp_str = strtok_r (dup_addr, ".", &save_ptr); do { diff --git a/tests/bugs/bug-977246.t b/tests/bugs/bug-977246.t new file mode 100644 index 00000000000..e07ee191939 --- /dev/null +++ b/tests/bugs/bug-977246.t @@ -0,0 +1,21 @@ +#! /bin/bash + +# This test checks if address validation, correctly catches hostnames +# with consective dots, such as 'example..org', as invalid + +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 $H0:$B0/${V0}1 +TEST $CLI volume info $V0 +TEST $CLI volume start $V0 + +TEST ! $CLI volume set $V0 auth.allow example..org + +TEST $CLI volume stop $V0 + +cleanup; |