diff options
author | Avra Sengupta <asengupt@redhat.com> | 2013-02-25 16:38:34 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-02-25 19:52:25 -0800 |
commit | 3f1ef648b969cb0acde4d920fc0ac21f533b51d0 (patch) | |
tree | 5d58cb1d4cb45989f816bbfd4c17e611c622dfea | |
parent | 15d4ae7da9379c55ba4561265747bbbe261c4a9c (diff) |
libglusterfs: Fixed valid_ipv4_address and valid_host_name
In valid_ipv4_address(), strtok_r was ignoring consecutive dots,
and was marking any address with consecutive dots as valid. Now
such addresses will be marked as invalid.
In valid_host_name(), any name ending with any special characters
was marked as valid. Now such hostnames will be marked as invalid.
Change-Id: If9b625d9040a14bde8c176fe36e337cb483e284a
BUG: 822830
Signed-off-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-on: http://review.gluster.org/4579
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
-rw-r--r-- | libglusterfs/src/common-utils.c | 12 | ||||
-rwxr-xr-x | tests/bugs/bug-822830.t | 44 |
2 files changed, 55 insertions, 1 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 8c50b157acf..95b8abf6969 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -1708,6 +1708,11 @@ valid_host_name (char *address, int length) goto out; } + if (!isalnum (dup_addr[length - 1]) && (dup_addr[length - 1] != '*')) { + ret = 0; + goto out; + } + /* gen-name */ temp_str = strtok_r (dup_addr, ".", &save_ptr); do { @@ -1744,8 +1749,13 @@ valid_ipv4_address (char *address, int length, gf_boolean_t wildcard_acc) tmp = gf_strdup (address); - /* To prevent cases where last character is '.' */ + /* + * To prevent cases where last character is '.' and which have + * consecutive dots like ".." as strtok ignore consecutive + * delimeters. + */ if (length <= 0 || + (strstr (address, "..")) || (!isdigit (tmp[length - 1]) && (tmp[length - 1] != '*'))) { ret = 0; goto out; diff --git a/tests/bugs/bug-822830.t b/tests/bugs/bug-822830.t new file mode 100755 index 00000000000..000d99f03cc --- /dev/null +++ b/tests/bugs/bug-822830.t @@ -0,0 +1,44 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +## Start and create a volume +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume create $V0 replica 2 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8}; + +## Verify volume is is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +## Setting nfs.rpc-auth-reject as 192.*..* +TEST ! $CLI volume set $V0 nfs.rpc-auth-reject 192.*..* +EXPECT '' volinfo_field $V0 'nfs.rpc-auth-reject'; + +# Setting nfs.rpc-auth-allow as a.a. +TEST ! $CLI volume set $V0 nfs.rpc-auth-allow a.a. +EXPECT '' volinfo_field $V0 'nfs.rpc-auth-allow'; + +# Setting nfs.rpc-auth-allow as a.a +TEST $CLI volume set $V0 nfs.rpc-auth-allow a.a +EXPECT 'a.a' volinfo_field $V0 'nfs.rpc-auth-allow'; + +## Setting nfs.rpc-auth-reject as 192.*.* +TEST $CLI volume set $V0 nfs.rpc-auth-reject 192.*.* +EXPECT '192.*.*' volinfo_field $V0 'nfs.rpc-auth-reject'; + +## Finish up +TEST $CLI volume stop $V0; +EXPECT 'Stopped' volinfo_field $V0 'Status'; + +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; |