This is an automated email from the ASF dual-hosted git repository.
jongyoul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new f025a697c1 [HOTFIX] Validate note name (#4632)
f025a697c1 is described below
commit f025a697c1d1d0264064d5adf6cb0b20d85041b6
Author: Jongyoul Lee <[email protected]>
AuthorDate: Tue Jul 18 15:13:08 2023 +0900
[HOTFIX] Validate note name (#4632)
* [HOTFIX] Validate note name
* [HOTFIX] Validate note name
* [HOTFIX] Validate note name
* Update
zeppelin-server/src/test/java/org/apache/zeppelin/service/NotebookServiceTest.java
Co-authored-by: Philipp Dallig <[email protected]>
* Update
zeppelin-server/src/main/java/org/apache/zeppelin/service/NotebookService.java
Co-authored-by: Philipp Dallig <[email protected]>
* [HOTFIX] Fix commented
---------
Co-authored-by: Philipp Dallig <[email protected]>
---
.../java/org/apache/zeppelin/service/NotebookService.java | 8 ++++++++
.../org/apache/zeppelin/service/NotebookServiceTest.java | 12 ++++++++++++
2 files changed, 20 insertions(+)
diff --git
a/zeppelin-server/src/main/java/org/apache/zeppelin/service/NotebookService.java
b/zeppelin-server/src/main/java/org/apache/zeppelin/service/NotebookService.java
index 2e98031830..d148150e5f 100644
---
a/zeppelin-server/src/main/java/org/apache/zeppelin/service/NotebookService.java
+++
b/zeppelin-server/src/main/java/org/apache/zeppelin/service/NotebookService.java
@@ -24,6 +24,8 @@ import static
org.apache.zeppelin.interpreter.InterpreterResult.Code.ERROR;
import static org.apache.zeppelin.scheduler.Job.Status.ABORT;
import java.io.IOException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
@@ -236,6 +238,12 @@ public class NotebookService {
}
notePath = notePath.replace("\r", " ").replace("\n", " ");
+
+ notePath = URLDecoder.decode(notePath, StandardCharsets.UTF_8.toString());
+ if (notePath.endsWith("/")) {
+ throw new IOException("Note name shouldn't end with '/'");
+ }
+
int pos = notePath.lastIndexOf("/");
if ((notePath.length() - pos) > 255) {
throw new IOException("Note name must be less than 255");
diff --git
a/zeppelin-server/src/test/java/org/apache/zeppelin/service/NotebookServiceTest.java
b/zeppelin-server/src/test/java/org/apache/zeppelin/service/NotebookServiceTest.java
index d2b7aa78c4..01e81c537c 100644
---
a/zeppelin-server/src/test/java/org/apache/zeppelin/service/NotebookServiceTest.java
+++
b/zeppelin-server/src/test/java/org/apache/zeppelin/service/NotebookServiceTest.java
@@ -528,5 +528,17 @@ class NotebookServiceTest {
} catch (IOException e) {
assertEquals("Note name can not contain '..'", e.getMessage());
}
+ try {
+ notebookService.normalizeNotePath("%2e%2e/%2e%2e/tmp/test222");
+ fail("Should fail");
+ } catch (IOException e) {
+ assertEquals("Note name can not contain '..'", e.getMessage());
+ }
+ try {
+ notebookService.normalizeNotePath("./");
+ fail("Should fail");
+ } catch (IOException e) {
+ assertEquals("Note name shouldn't end with '/'", e.getMessage());
+ }
}
}