HDFS-3581. FSPermissionChecker#checkPermission sticky bit check missing range check. Contributed by Eli Collins

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1356971 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Eli Collins 2012-07-03 21:43:25 +00:00
parent 8188c1cb41
commit 359b4efd19
3 changed files with 8 additions and 5 deletions

View File

@ -399,6 +399,9 @@ Branch-2 ( Unreleased changes )
HDFS-3574. Fix small race and do some cleanup in GetImageServlet (todd)
HDFS-3581. FSPermissionChecker#checkPermission sticky bit check
missing range check. (eli)
BREAKDOWN OF HDFS-3042 SUBTASKS
HDFS-2185. HDFS portion of ZK-based FailoverController (todd)

View File

@ -127,10 +127,10 @@ void checkPermission(String path, INodeDirectory root, boolean doCheckOwner,
ancestorIndex--);
checkTraverse(inodes, ancestorIndex);
if(parentAccess != null && parentAccess.implies(FsAction.WRITE)
&& inodes[inodes.length - 1] != null)
if (parentAccess != null && parentAccess.implies(FsAction.WRITE)
&& inodes.length > 1 && inodes[inodes.length - 1] != null) {
checkStickyBit(inodes[inodes.length - 2], inodes[inodes.length - 1]);
}
if (ancestorAccess != null && inodes.length > 1) {
check(inodes, ancestorIndex, ancestorAccess);
}

View File

@ -259,8 +259,8 @@ public void testRootDir() throws IOException {
assertTrue(status != null);
assertEquals(0777, status.getPermission().toShort());
//delete root - disabled due to a sticky bit bug
//assertFalse(fs.delete(root, true));
//delete root
assertFalse(fs.delete(root, true));
//create file using root path
try {