This is an automated email from the ASF dual-hosted git repository.

ggal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-livy.git


The following commit(s) were added to refs/heads/master by this push:
     new e79ebe37 Update directory configuration
e79ebe37 is described below

commit e79ebe379af3cc2f1d4dce52f0b79b37c9e7939e
Author: Gyorgy Gal <[email protected]>
AuthorDate: Mon Dec 1 14:59:49 2025 -0500

    Update directory configuration
---
 server/src/main/scala/org/apache/livy/sessions/Session.scala     | 4 +++-
 server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala | 6 ++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/server/src/main/scala/org/apache/livy/sessions/Session.scala 
b/server/src/main/scala/org/apache/livy/sessions/Session.scala
index 423f8ebb..d4bb491d 100644
--- a/server/src/main/scala/org/apache/livy/sessions/Session.scala
+++ b/server/src/main/scala/org/apache/livy/sessions/Session.scala
@@ -19,6 +19,7 @@ package org.apache.livy.sessions
 
 import java.io.InputStream
 import java.net.{URI, URISyntaxException}
+import java.nio.file.Paths
 import java.security.PrivilegedExceptionAction
 import java.util.concurrent.{Executors, LinkedBlockingQueue, ThreadFactory, 
ThreadPoolExecutor, TimeUnit}
 import java.util.UUID
@@ -134,7 +135,8 @@ object Session {
 
     if (resolved.getScheme() == "file") {
       // Make sure the location is whitelisted before allowing local files to 
be added.
-      
require(livyConf.localFsWhitelist.find(resolved.getPath().startsWith).isDefined,
+      require(livyConf.localFsWhitelist.find(
+        Paths.get(resolved.getPath()).normalize.startsWith).isDefined,
         s"Local path ${uri.getPath()} cannot be added to user sessions.")
     }
 
diff --git a/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala 
b/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
index aa5d4563..a7749634 100644
--- a/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
+++ b/server/src/test/scala/org/apache/livy/sessions/SessionSpec.scala
@@ -51,6 +51,12 @@ class SessionSpec extends FunSuite with 
LivyBaseUnitTestSuite {
         Session.resolveURI(new URI(path), conf)
       }
     }
+
+    Seq("/allowed/../file", "/also_allowed/../file").foreach { path =>
+      intercept[IllegalArgumentException] {
+        Session.resolveURI(new URI(path), conf)
+      }
+    }
   }
 
   test("conf validation and preparation") {

Reply via email to