Message ID | 168934591095.3368057.15849162788748534581.stgit@frogsfrogsfrogs (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | xfsprogs: ubsan fixes for 6.5-rc2 | expand |
The change itself looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
But as mentioned in the last thread leaving these out in the UAPI
is a bit dangerous, and at the same time they really shouldn't
be in the uapi. Do you want me to send an incremental patch for
that?
On Fri, Jul 14, 2023 at 04:46:38PM +0200, Christoph Hellwig wrote: > The change itself looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> > > But as mentioned in the last thread leaving these out in the UAPI > is a bit dangerous, and at the same time they really shouldn't > be in the uapi. Do you want me to send an incremental patch for > that? Yes please. :) FWIW I tried removing the attrlist ioctl structs, but I couldn't find anywhere else in the kernel uapi headers that defines them so that the ioctl code can actually format the buffer. --D
On Fri, Jul 14, 2023 at 07:54:39AM -0700, Darrick J. Wong wrote: > FWIW I tried removing the attrlist ioctl structs, but I couldn't find > anywhere else in the kernel uapi headers that defines them so that the > ioctl code can actually format the buffer. We need to keep them somewhere. But I'd rather not do that in xfs_fs.h which through xfsprogs goes into /usr/include/. I'd probably do it locally in xfs_ioctl.c with an extended version of the comment about matching the libattr structures.
diff --git a/libxfs/xfs_fs.h b/libxfs/xfs_fs.h index 9c60ebb3..2cbf9ea3 100644 --- a/libxfs/xfs_fs.h +++ b/libxfs/xfs_fs.h @@ -592,12 +592,12 @@ typedef struct xfs_attrlist_cursor { struct xfs_attrlist { __s32 al_count; /* number of entries in attrlist */ __s32 al_more; /* T/F: more attrs (do call again) */ - __s32 al_offset[1]; /* byte offsets of attrs [var-sized] */ + __s32 al_offset[]; /* byte offsets of attrs [var-sized] */ }; struct xfs_attrlist_ent { /* data from attr_list() */ __u32 a_valuelen; /* number bytes in value of attr */ - char a_name[1]; /* attr name (NULL terminated) */ + char a_name[]; /* attr name (NULL terminated) */ }; typedef struct xfs_fsop_attrlist_handlereq {