Date: Tue, 17 Jan 2017 03:38:28 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-amd64@FreeBSD.org Subject: [Bug 216127] sbin/restore doesn't honour extended attributes (extattr on ufs) Message-ID: <bug-216127-6-87ncrluQOw@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-216127-6@https.bugs.freebsd.org/bugzilla/> References: <bug-216127-6@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D216127 Conrad Meyer <cem@freebsd.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mckusick@FreeBSD.org --- Comment #3 from Conrad Meyer <cem@freebsd.org> --- The kernel code (e.g. ffs_findextattr) indicates that EA names are not, in fact, nul-terminated. So the headers restore uses are wrong, as is the res= tore code. This piece of kernel code hasn't changed substantially since the ear= ly 2000s. The misleading header comment and macros that reference ea_name as if it is= a nul-terminated string were introduced in 2007 in r167010. It immediately precedes r167011, which introduced extattr support to restore. ea_name will *happen* to be nul-terminated when ea_namelength % 8 =3D=3D 1,= like in your "m" example. This is because `sizeof(uint32_t) + 3 * sizeof(uint8_t) + strlen(ea_name)` is padded to multiples of 8 bytes, and the padding is alwa= ys zeroed. Well, there's a long time between ~2002 and 2007. Maybe Kirk just forgot t= hat ea_name wasn't nul-terminated, or didn't try any keys with length =3D=3D 1 = (mod 8). I propose the following actions: * Fix the ufs/extattr.h documentation for ea_name, and remove EXTATTR_SET_LENGTHS macro (unused) entirely (it uses strlen(ea_name)) * Fix accompanying documentation in extattr.9, fs.5. * Merge set_extattr_file(), set_extattr_link(), and set_extattr_fd() in res= tore and fix uses of ea_name that assume nul-termination. * Finally, perform the simplification that was proposed in the r167010 comm= it log. I'll draw up some patches. --=20 You are receiving this mail because: You are on the CC list for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-216127-6-87ncrluQOw>