This is an automated email from the ASF dual-hosted git repository.
siddhant 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 63c49e2364 HDDS-5161. Fix the regex for key name validation (#5200)
63c49e2364 is described below
commit 63c49e23649c21175381d53186eaba0f2f16ef0a
Author: Tejaskriya <[email protected]>
AuthorDate: Wed Aug 30 11:51:28 2023 +0530
HDDS-5161. Fix the regex for key name validation (#5200)
---
.../java/org/apache/hadoop/ozone/OzoneConsts.java | 8 ++---
.../hadoop/ozone/client/TestHddsClientUtils.java | 37 +++++++++++++++++++++-
2 files changed, 40 insertions(+), 5 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
index 6008ef8642..27855d187d 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
@@ -427,12 +427,12 @@ public final class OzoneConsts {
* contains illegal characters when creating/renaming key.
*
* Avoid the following characters in a key name:
- * "\", "{", "}", "^", "<", ">", "#", "|", "%", "`", "[", "]", "~", "?"
- * and Non-printable ASCII characters (128–255 decimal characters).
- * https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
+ * "\", "{", "}", "<", ">", "^", "%", "~", "#", "|", "`", "[", "]", Quotation
+ * marks and Non-printable ASCII characters (128–255 decimal characters).
+ * https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
*/
public static final Pattern KEYNAME_ILLEGAL_CHARACTER_CHECK_REGEX =
- Pattern.compile("^[^^{}<>^?%~#`\\[\\]\\|\\\\(\\x80-\\xff)]+$");
+ Pattern.compile("^[^\\\\{}<>^%~#|`\\[\\]\"\\x80-\\xff]+$");
public static final String FS_FILE_COPYING_TEMP_SUFFIX = "._COPYING_";
diff --git
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestHddsClientUtils.java
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestHddsClientUtils.java
index 6c047ab998..0ee211f3d5 100644
---
a/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestHddsClientUtils.java
+++
b/hadoop-ozone/client/src/test/java/org/apache/hadoop/ozone/client/TestHddsClientUtils.java
@@ -279,7 +279,14 @@ public class TestHddsClientUtils {
invalidNames.add("test<string>");
invalidNames.add("10%3=1");
invalidNames.add("photo[0201]");
- invalidNames.add("what?");
+ invalidNames.add("square_right]");
+ invalidNames.add("my\\file");
+ invalidNames.add("for}");
+ invalidNames.add("{curly-left");
+ invalidNames.add("\"hi\"");
+ invalidNames.add("\\\\~`");
+ invalidNames.add("Code`");
+
for (String name : invalidNames) {
try {
@@ -289,5 +296,33 @@ public class TestHddsClientUtils {
// throwing up on an invalid name. it's working.
}
}
+
+ List<String> validNames = new ArrayList<>();
+ validNames.add("123_123");
+ validNames.add("abcd/abcd");
+ validNames.add("test-name");
+ validNames.add("hi!ozone");
+ validNames.add("test(string)");
+ validNames.add("10*3+1");
+ validNames.add("photo'0201'");
+ validNames.add("my.name");
+ validNames.add("you&me");
+ validNames.add("1=0");
+ validNames.add("print;");
+ validNames.add("3:5:2");
+ validNames.add("a,b,c");
+ validNames.add("my name is");
+ validNames.add("xyz@mail");
+ validNames.add("dollar$");
+
+ for (String name : validNames) {
+ try {
+ HddsClientUtils.verifyKeyName(name);
+ // not throwing up on a valid name. it's working.
+ } catch (IllegalArgumentException e) {
+ // throwing up on an valid name. it's not working.
+ fail("Rejected valid string [" + name + "] as a name");
+ }
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]