From 47b2bc274a0f00520b4b930da9034a76903b66b1 Mon Sep 17 00:00:00 2001 From: Varun Shastry Date: Fri, 21 Dec 2012 17:25:54 +0530 Subject: system/posix-acl: prevent NULL pointer dereference of group_ce Thanks Amar Tumballi. Change-Id: I3ac9b46d4c3fcd12d1eec779317a03c47d267556 BUG: 887098 Signed-off-by: Varun Shastry Reviewed-on: http://review.gluster.org/4395 Reviewed-by: Anand Avati Tested-by: Anand Avati --- tests/bugs/bug-887098-gmount-crash.t | 48 ++++++++++++++++++++++++++++++++ xlators/system/posix-acl/src/posix-acl.c | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 tests/bugs/bug-887098-gmount-crash.t diff --git a/tests/bugs/bug-887098-gmount-crash.t b/tests/bugs/bug-887098-gmount-crash.t new file mode 100644 index 00000000000..54e52d4dc45 --- /dev/null +++ b/tests/bugs/bug-887098-gmount-crash.t @@ -0,0 +1,48 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +## Start and create a volume +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4}; + +## Verify volume is is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + +function pidgrep() +{ + ps ax | grep "$1" | awk '{print $1}' | head -1 +} + + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +TEST glusterfs -s $H0 --volfile-id=$V0 --acl $M0 +MOUNT_PID=`ps ax |grep "glusterfs -s $H0 --volfile-id=$V0 --acl $M0" | awk '{print $1}' | head -1` + +for i in {1..25}; +do + mkdir $M0/tmp_$i && cat /etc/hosts > $M0/tmp_$i/file + cp -RPp $M0/tmp_$i $M0/newtmp_$i && cat /etc/hosts > $M0/newtmp_$i/newfile +done + +EXPECT "$MOUNT_PID" pidgrep $MOUNT_PID +TEST rm -rf $M0/* +umount $M0 + +## Finish up +TEST $CLI volume stop $V0; +EXPECT 'Stopped' volinfo_field $V0 'Status'; + +TEST $CLI volume delete $V0; + +cleanup; diff --git a/xlators/system/posix-acl/src/posix-acl.c b/xlators/system/posix-acl/src/posix-acl.c index 11653c9230f..bb3e7caa984 100644 --- a/xlators/system/posix-acl/src/posix-acl.c +++ b/xlators/system/posix-acl/src/posix-acl.c @@ -526,7 +526,7 @@ posix_acl_inherit_mode (struct posix_acl *acl, mode_t modein) if (mask_ce) { mask_ce->perm &= (mode >> 3) | ~S_IRWXO; mode &= (mask_ce->perm << 3) | ~S_IRWXG; - } else { + } else if (group_ce) { group_ce->perm &= (mode >> 3) | ~S_IRWXO; mode &= (group_ce->perm << 3) | ~S_IRWXG; } -- cgit