xfs
[Top] [All Lists]

Re: [ANNOUNCE, DISCUSS] xfsprogs: libxfs-4.1-update branch created

To: Dave Chinner <david@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
Subject: Re: [ANNOUNCE, DISCUSS] xfsprogs: libxfs-4.1-update branch created
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Wed, 13 May 2015 17:25:49 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <5553CCD2.1010906@xxxxxxxxxxx>
References: <20150511000508.GD16689@dastard> <5553CCD2.1010906@xxxxxxxxxxx>
On 5/13/15 5:14 PM, Eric Sandeen wrote:
> One interesting problem that arises from this is in xfs_format.h:
> 
> /* On-disk XFS extended attribute names */
> #define SGI_ACL_FILE            (char *)"SGI_ACL_FILE"
> #define SGI_ACL_DEFAULT         (char *)"SGI_ACL_DEFAULT"
> #define SGI_ACL_FILE_SIZE       (sizeof(SGI_ACL_FILE)-1)
> #define SGI_ACL_DEFAULT_SIZE    (sizeof(SGI_ACL_DEFAULT)-1)
> 
> (aside: why is it unsigned in the kernel but not here?)
> 
> Anyway: that "sizeof" gives us 7, because it's getting the
> size of the pointer, not the string literal.  Cool eh!
> Never mattered in the kernel, because the _SIZE macros aren't
> used.
> 
> I'm not actually sure what the cleanest way to fix this is;
> casting string literals gets way past my comfort level with
> C pedantry; technically if we want an array of unsigned chars,
> we probably need:
> 
> unsigned char *SGI_ACL_FILE[] = "SGI_ACL_FILE";
> unsigned char *SGI_ACL_DEFAULT[] = "SGI_ACL_DEFAULT";

Er, drop the * of course ...

-Eric

<Prev in Thread] Current Thread [Next in Thread>