Hide Forgot
Description of problem: When I fetch two(or more) extra attr data from CIFS files using getfattr, I get wrong data. I scan source code(2.6.32-170), find CIFSSMBQAllEAs parse wrongly the data which is returned by SMB messages. Test steps: [root@amd-pike-02 ~]# setfattr -n user.test -v test /mnt/test/test [root@amd-pike-02 ~]# setfattr -n user.test1 -v test1 /mnt/test/test [root@amd-pike-02 ~]# setfattr -n user.1test -v 1test /mnt/test/test [root@amd-pike-02 ~]# getfattr -d /mnt/test/test getfattr: Removing leading '/' from absolute path names # file: mnt/test/test user.1test="1test" user.security.selinux="unconfined_u:object_r:default_t:s0 user.test="test" user.test1="test" <----- should be "test1" [root@amd-pike-02 ~]# getfattr -n user.test1 /mnt/test/test getfattr: Removing leading '/' from absolute path names # file: mnt/test/test user.test1="test" <------ should be "test1" Analysis: [fs/cifs/cifssmb.c] [5815] name_len = temp_fea->name_len; <snip> [5825] if (ea_name) { if (strncmp(ea_name, temp_ptr, name_len) == 0) { ----ea_name="test1" temp_ptr="test" name_len=4 ----if (ea_name && strnlen(ea_name,0x1000) == name_len)) .....
(In reply to comment #0) > Description of problem: > When I fetch two(or more) extra attr data from CIFS files using getfattr, I Execute, mistake extended attribute with extra attribute
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
Nice catch. Doesn't look too tough to fix -- just need to make sure we match the length of names before the strncmp. I sent a patch upstream to fix this. If it gets pushed for 3.1 in the near future, I'll plan to put this in RHEL6.2. http://article.gmane.org/gmane.linux.kernel.cifs/3808
Looks like this patch causes a compiler warning to pop with certain gcc versions (including RHEL6's). I'll respin and re-post.
Patch(es) available on kernel-2.6.32-183.el6
This bug is tested with case /kernel/filesystems/cifs/xattr ======reproduce [root@ibm-hs21-01 xattr]# make run **snip** < user.test0="test" **snip** --- > user.test0="test0" **snip** /kernel/filesystems/cifs/xattr result: FAIL **snip** [root@ibm-hs21-01 xattr]# uname -a Linux ibm-hs21-01.rhts.eng.nay.redhat.com 2.6.32-178.el6.x86_64 #1 SMP Wed Aug 3 10:43:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux ======verify [root@ibm-hs21-01 xattr]# uname -a Linux ibm-hs21-01.rhts.eng.nay.redhat.com 2.6.32-188.el6.x86_64 #1 SMP Fri Aug 12 10:22:27 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux [root@ibm-hs21-01 xattr]# pwd /mnt/tests/kernel/filesystems/cifs/xattr [root@ibm-hs21-01 xattr]# make run **snip** /kernel/filesystems/cifs/xattr result: SUCCESS **snip**
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2011-1530.html