From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hebb Subject: [PATCH] hfsplus: add missing osx prefix to FinderInfo attribute check Date: Tue, 31 Mar 2015 23:41:56 -0400 Message-ID: <551B6904.50405@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: stable@vger.kernel.org, Andrew Morton , Hin-Tak Leung , Sergei Antonov , Anton Altaparmakov , Fabian Frederick , Christian Kujau To: linux-fsdevel@vger.kernel.org Return-path: Received: from mail-qg0-f43.google.com ([209.85.192.43]:33059 "EHLO mail-qg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751141AbbDADmD (ORCPT ); Tue, 31 Mar 2015 23:42:03 -0400 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: By the time we reach strcmp_xattr_finder_info(), hfsplus_osx_getxattr() has already prefixed the user-provided xattr name with "osx.", so the existing check for the special FinderInfo attribute will always fail, and ENODATA will be returned to userspace. Since hfsplus_listxattr() reports the FinderInfo attribute, this behavior causes certain userspace utilities (e.g. patch) to fail, since the kernel lists an attribute that doesn't exist. Cc: stable@vger.kernel.org Cc: Andrew Morton Cc: Hin-Tak Leung Cc: Sergei Antonov Cc: Anton Altaparmakov Cc: Fabian Frederick Cc: Christian Kujau Signed-off-by: Thomas Hebb --- fs/hfsplus/xattr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c index d98094a..da0664e 100644 --- a/fs/hfsplus/xattr.c +++ b/fs/hfsplus/xattr.c @@ -28,8 +28,16 @@ const struct xattr_handler *hfsplus_xattr_handlers[] = { static int strcmp_xattr_finder_info(const char *name) { + int err = 0; + if (name) { - return strncmp(name, HFSPLUS_XATTR_FINDER_INFO_NAME, + err = strncmp(name, XATTR_MAC_OSX_PREFIX, + XATTR_MAC_OSX_PREFIX_LEN); + if (err) + return err; + + return strncmp(name + XATTR_MAC_OSX_PREFIX_LEN, + HFSPLUS_XATTR_FINDER_INFO_NAME, sizeof(HFSPLUS_XATTR_FINDER_INFO_NAME)); } return -1; -- 2.3.4