From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Price Date: Mon, 15 Oct 2012 12:09:37 +0100 Subject: [Cluster-devel] [PATCH] mkfs.gfs2: Check locktable more strictly for valid chars In-Reply-To: <1350294416.2733.37.camel@menhir> References: <1350052638-22760-1-git-send-email-anprice@redhat.com> <1350294416.2733.37.camel@menhir> Message-ID: <507BEEF1.7010501@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On 15/10/12 10:46, Steven Whitehouse wrote: > Hi, > > Looks good. Should we also be limiting the number of : to just one I > wonder? That's already taken care of with a check a bit further down in that function: if (strstr(c, ":")) die( _("locktable error: more than one colon present\n")); Andy > > Steve. > > On Fri, 2012-10-12 at 15:37 +0100, Andrew Price wrote: >> 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 >> --- >> 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, ":"); > >