summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
authorAvra Sengupta <asengupt@redhat.com>2013-02-25 16:38:34 +0530
committerAnand Avati <avati@redhat.com>2013-02-25 19:52:25 -0800
commit3f1ef648b969cb0acde4d920fc0ac21f533b51d0 (patch)
tree5d58cb1d4cb45989f816bbfd4c17e611c622dfea /libglusterfs
parent15d4ae7da9379c55ba4561265747bbbe261c4a9c (diff)
downloadglusterfs-3f1ef648b969cb0acde4d920fc0ac21f533b51d0.tar.gz
glusterfs-3f1ef648b969cb0acde4d920fc0ac21f533b51d0.tar.xz
glusterfs-3f1ef648b969cb0acde4d920fc0ac21f533b51d0.zip
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>
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/common-utils.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
index 8c50b157ac..95b8abf696 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;