Hi,

Looks good. Should we also be limiting the number of : to just one I
wonder?

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 <[email protected]>
> ---
>  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, ":");


Reply via email to