[Libguestfs] [PATCH] daemon: check xfs label lengths (RHBZ#1162966).

Richard W.M. Jones rjones at redhat.com
Thu Nov 13 13:29:24 UTC 2014


On Wed, Nov 12, 2014 at 10:02:33AM +0100, Pino Toscano wrote:
> Similar to commit 52f9cd4882135910ea06e1e50ac6441d455c9ab1, but for xfs
> filesystems.
> ---
>  daemon/daemon.h | 4 ++++
>  daemon/labels.c | 6 ++++++
>  daemon/xfs.c    | 6 ++++++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/daemon/daemon.h b/daemon/daemon.h
> index 0ccbc9e..f442efd 100644
> --- a/daemon/daemon.h
> +++ b/daemon/daemon.h
> @@ -253,6 +253,10 @@ extern void main_loop (int sock) __attribute__((noreturn));
>  /*-- in xattr.c --*/
>  extern int copy_xattrs (const char *src, const char *dest);
>  
> +/*-- in xfs.c --*/
> +/* Documented in xfs_admin(8). */
> +#define XFS_LABEL_MAX 12
> +
>  /* ordinary daemon functions use these to indicate errors
>   * NB: you don't need to prefix the string with the current command,
>   * it is added automatically by the client-side RPC stubs.
> diff --git a/daemon/labels.c b/daemon/labels.c
> index f417c57..cfcb4df 100644
> --- a/daemon/labels.c
> +++ b/daemon/labels.c
> @@ -118,6 +118,12 @@ xfslabel (const char *device, const char *label)
>      return -1;
>    }
>  
> +  if (strlen (label) > XFS_LABEL_MAX) {
> +    reply_with_error ("%s: xfs labels are limited to %d bytes",
> +                      label, XFS_LABEL_MAX);
> +    return -1;
> +  }
> +
>    r = command (NULL, &err, str_xfs_admin, "-L", label, device, NULL);
>    if (r == -1) {
>      reply_with_error ("%s", err);
> diff --git a/daemon/xfs.c b/daemon/xfs.c
> index 725f7b3..687013b 100644
> --- a/daemon/xfs.c
> +++ b/daemon/xfs.c
> @@ -498,6 +498,12 @@ do_xfs_admin (const char *device,
>    }
>  
>    if (optargs_bitmask & GUESTFS_XFS_ADMIN_LABEL_BITMASK) {
> +    if (strlen (label) > XFS_LABEL_MAX) {
> +      reply_with_error ("%s: xfs labels are limited to %d bytes",
> +                        label, XFS_LABEL_MAX);
> +      return -1;
> +    }
> +
>      ADD_ARG (argv, i, "-L");
>      ADD_ARG (argv, i, label);
>    }
> -- 
> 1.9.3

Looks OK to me, ACK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list