HDFS-9123. Copying from the root to a subdirectory should be forbidden. (Wei-Chiu Chuang via Yongjun Zhang)

This commit is contained in:
Yongjun Zhang 2015-09-24 21:36:38 -07:00
parent 692b1a45ce
commit 3187dbd7a8
3 changed files with 23 additions and 1 deletions

View File

@ -238,7 +238,13 @@ protected void processPathArgument(PathData src)
e.setTargetPath(dstPath.toString());
throw e;
}
if (dstPath.startsWith(srcPath+Path.SEPARATOR)) {
// When a path is normalized, all trailing slashes are removed
// except for the root
if(!srcPath.endsWith(Path.SEPARATOR)) {
srcPath += Path.SEPARATOR;
}
if(dstPath.startsWith(srcPath)) {
PathIOException e = new PathIOException(src.toString(),
"is a subdirectory of itself");
e.setTargetPath(target.toString());

View File

@ -1409,6 +1409,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9076. Log full path instead of inodeId in DFSClient
#closeAllFilesBeingWritten() (Surendra Singh Lilhore via vinayakumarb)
HDFS-9123. Copying from the root to a subdirectory should be forbidden.
(Wei-Chiu Chuang via Yongjun Zhang)
Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES

View File

@ -1384,6 +1384,19 @@ public void testDFSShell() throws IOException {
e.getLocalizedMessage());
}
assertEquals(0, val);
// this should fail
args1[0] = "-cp";
args1[1] = "/";
args1[2] = "/test";
val = 0;
try {
val = shell.run(args1);
} catch (Exception e) {
System.err.println("Exception raised from DFSShell.run " +
e.getLocalizedMessage());
}
assertEquals(1, val);
}
// Verify -test -f negative case (missing file)