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]

Reply via email to