gfs2-utils: master - mkfs.gfs2: Check locktable more strictly for valid chars

Andrew Price andyp at fedoraproject.org
Mon Oct 15 11:17:48 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=24fad71d36ecce70a5d0d4206d0b13e7b77ec94c
Commit:        24fad71d36ecce70a5d0d4206d0b13e7b77ec94c
Parent:        abe3d4b88afe39d839692865b29bd800f09cba8a
Author:        Andrew Price <anprice at redhat.com>
AuthorDate:    Fri Oct 12 01:36:32 2012 +0100
Committer:     Andrew Price <anprice at redhat.com>
CommitterDate: Fri Oct 12 01:36:32 2012 +0100

mkfs.gfs2: Check locktable more strictly for valid chars

Previously mkfs.gfs2 allowed any printable characters to be used in the
locktable name. This causes problems when the locktable contains special
characters such as '/'. This patch limits the locktable to alphanumeric
characters plus hyphens and underscores.

Ref: bz#862847

Signed-off-by: Andrew Price <anprice at redhat.com>
---
 gfs2/man/mkfs.gfs2.8  |    3 ++-
 gfs2/mkfs/main_mkfs.c |    6 ++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/gfs2/man/mkfs.gfs2.8 b/gfs2/man/mkfs.gfs2.8
index d17e272..4613305 100644
--- a/gfs2/man/mkfs.gfs2.8
+++ b/gfs2/man/mkfs.gfs2.8
@@ -73,7 +73,8 @@ Clustername must match that in cluster.conf; only members of this
 cluster are permitted to use this file system.
 Fsname is a unique file system name used to distinguish this GFS2 file
 system from others created (1 to 16 characters).  Lock_nolock doesn't
-use this field.
+use this field. Valid \fIclustername\fRs and \fIfsname\fRs may only contain
+alphanumeric characters, hyphens (-) and underscores (_).
 .TP
 \fB-V\fP
 Print program version information, then exit.
diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
index 2d529d7..3bbb5b4 100644
--- a/gfs2/mkfs/main_mkfs.c
+++ b/gfs2/mkfs/main_mkfs.c
@@ -259,10 +259,8 @@ static void test_locking(char *lockproto, char *locktable)
 			exit(-1);
 		}
 		for (c = locktable; *c; c++) {
-			if (isspace(*c))
-				die( _("locktable error: contains space characters\n"));
-			if (!isprint(*c))
-				die( _("locktable error: contains unprintable characters\n"));
+			if (!isalnum(*c) && (*c != '-') && (*c != '_') && (*c != ':'))
+				die( _("locktable error: invalid character '%c'\n"), *c);
 		}
 
 		c = strstr(locktable, ":");


More information about the cluster-commits mailing list