You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ay...@apache.org on 2020/11/14 05:27:37 UTC
[ozone] branch master updated: HDDS-4235. Ozone client FS path
validation is not present in OFS. (#1582)
This is an automated email from the ASF dual-hosted git repository.
ayushsaxena pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new b80d9b0 HDDS-4235. Ozone client FS path validation is not present in OFS. (#1582)
b80d9b0 is described below
commit b80d9b0e4a755c4707f25c18d7e18ad44c32dbcd
Author: Ayush Saxena <ay...@apache.org>
AuthorDate: Sat Nov 14 10:57:00 2020 +0530
HDDS-4235. Ozone client FS path validation is not present in OFS. (#1582)
---
.../hadoop/fs/ozone/TestRootedOzoneFileSystem.java | 23 ++++++++++++++++++++++
.../hadoop/fs/ozone/BasicOzoneFileSystem.java | 6 ++----
.../fs/ozone/BasicRootedOzoneFileSystem.java | 8 +++++++-
3 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
index f8b07ab..46528ff 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestRootedOzoneFileSystem.java
@@ -24,6 +24,7 @@ import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.InvalidPathException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathIsNotEmptyDirectoryException;
import org.apache.hadoop.fs.Trash;
@@ -47,6 +48,7 @@ import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer.ACLType;
import org.apache.hadoop.ozone.security.acl.OzoneAclConfig;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.test.GenericTestUtils;
+import org.apache.hadoop.test.LambdaTestUtils;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -1210,4 +1212,25 @@ public class TestRootedOzoneFileSystem {
ofs.delete(trashRoot, true);
}
+
+ @Test
+ public void testCreateWithInvalidPaths() throws Exception {
+ // Test for path with ..
+ Path parent = new Path("../../../../../d1/d2/");
+ Path file1 = new Path(parent, "key1");
+ checkInvalidPath(file1);
+
+ // Test for path with :
+ file1 = new Path("/:/:");
+ checkInvalidPath(file1);
+
+ // Test for path with scheme and authority.
+ file1 = new Path(fs.getUri() + "/:/:");
+ checkInvalidPath(file1);
+ }
+
+ private void checkInvalidPath(Path path) throws Exception {
+ LambdaTestUtils.intercept(InvalidPathException.class, "Invalid path Name",
+ () -> fs.create(path, false));
+ }
}
diff --git a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
index f6dedc8..f6d2ef5 100644
--- a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
+++ b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicOzoneFileSystem.java
@@ -814,10 +814,8 @@ public class BasicOzoneFileSystem extends FileSystem {
// removing leading '/' char
String key = path.toUri().getPath();
- if (OzoneFSUtils.isValidName(key)) {
- key = path.toUri().getPath();
- } else {
- throw new InvalidPathException("Invalid path Name" + key);
+ if (!OzoneFSUtils.isValidName(key)) {
+ throw new InvalidPathException("Invalid path Name " + key);
}
LOG.trace("path for key:{} is:{}", key, path);
return key.substring(1);
diff --git a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
index c8d6139..c035abb 100644
--- a/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
+++ b/hadoop-ozone/ozonefs-common/src/main/java/org/apache/hadoop/fs/ozone/BasicRootedOzoneFileSystem.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileChecksum;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.InvalidPathException;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Options;
import org.apache.hadoop.fs.Path;
@@ -41,6 +42,7 @@ import org.apache.hadoop.hdds.utils.LegacyHadoopConfigurationSource;
import org.apache.hadoop.ozone.client.OzoneBucket;
import org.apache.hadoop.ozone.client.OzoneVolume;
import org.apache.hadoop.ozone.om.exceptions.OMException;
+import org.apache.hadoop.ozone.om.helpers.OzoneFSUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.util.Progressable;
@@ -840,8 +842,12 @@ public class BasicRootedOzoneFileSystem extends FileSystem {
if (!path.isAbsolute()) {
path = new Path(workingDir, path);
}
+ String key = path.toUri().getPath();
+ if (!OzoneFSUtils.isValidName(key)) {
+ throw new InvalidPathException("Invalid path Name " + key);
+ }
// removing leading '/' char
- String key = path.toUri().getPath().substring(1);
+ key = key.substring(1);
LOG.trace("path for key: {} is: {}", key, path);
return key;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org