From owner-freebsd-amd64@freebsd.org Tue Jan 17 03:38:28 2017 Return-Path: Delivered-To: freebsd-amd64@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 76BABCB337E for ; Tue, 17 Jan 2017 03:38:28 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4C8DF11E1 for ; Tue, 17 Jan 2017 03:38:28 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id v0H3cS8a046099 for ; Tue, 17 Jan 2017 03:38:28 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-amd64@FreeBSD.org Subject: [Bug 216127] sbin/restore doesn't honour extended attributes (extattr on ufs) Date: Tue, 17 Jan 2017 03:38:28 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: 11.0-STABLE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: cem@freebsd.org X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: cem@freebsd.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2017 03:38:28 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D216127 Conrad Meyer changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mckusick@FreeBSD.org --- Comment #3 from Conrad Meyer --- 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.=