diff options
author | Günther Deschner <gd@samba.org> | 2017-07-28 13:38:16 +0200 |
---|---|---|
committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-08-01 13:14:03 +0000 |
commit | ab4ffdac9dec1867f2d9b33242179cf2b347319d (patch) | |
tree | 66f0af0e1c9888ab1026f69e68009ca078ddc1ad /tests | |
parent | e5db980504bc4ace037ea806ad89a1ca897150d5 (diff) |
md-cache: avoid checking the xattr value buffer with string functions.
xattrs may very well contain binary, non-text data with leading 0
values. Using strcmp for checking empty values is not the appropriate
thing to do: In the best case, it might treat a binary xattr value
starting with 0 from being cached (and hence also from being reported
back with xattr). In the worst case, we might read beyond the end
of a data blob that does contain any zero byte.
We fix this by checking the length of the data blob and checking
the first byte against 0 if the length is one.
Signed-off-by: Guenther Deschner <gd@samba.org>
Pair-Programmed-With: Michael Adam <obnox@samba.org>
Change-Id: If723c465a630b8a37b6be58782a2724df7ac6b11
BUG: 1476324
Reviewed-on: https://review.gluster.org/17910
Reviewed-by: Michael Adam <obnox@samba.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Poornima G <pgurusid@redhat.com>
Tested-by: Poornima G <pgurusid@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs/md-cache/bug-1476324.t | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/bugs/md-cache/bug-1476324.t b/tests/bugs/md-cache/bug-1476324.t new file mode 100644 index 00000000000..c34f412a15e --- /dev/null +++ b/tests/bugs/md-cache/bug-1476324.t @@ -0,0 +1,27 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +TEST glusterd; + +TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2,3}; + +TEST $CLI volume start $V0 + +TEST $CLI volume set $V0 performance.md-cache-timeout 600 +TEST $CLI volume set $V0 performance.cache-samba-metadata on + +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 + +TEST touch $M0/file1 + +TEST "setfattr -n user.DOSATTRIB -v 0sAAOW $M0/file1" +TEST "getfattr -n user.DOSATTRIB $M0/file1 -e base64 | grep -q 0sAAOW" + +TEST "setfattr -n user.DOSATTRIB -v 0x00ff $M0/file1" +TEST "getfattr -n user.DOSATTRIB $M0/file1 -e hex | grep -q 0x00ff" + +cleanup; |