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

markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new f825f624a1 Refactor normalization to align with how Jasper does it 
elsewhere
f825f624a1 is described below

commit f825f624a1221a0747abc3ccfc07e32c1300043b
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Jun 28 15:49:50 2024 +0100

    Refactor normalization to align with how Jasper does it elsewhere
    
    I did look at pulling this code into a common utility function but the
    usage is just different enough that it isn't (yet) worth it.
---
 java/org/apache/jasper/compiler/ParserController.java | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/jasper/compiler/ParserController.java 
b/java/org/apache/jasper/compiler/ParserController.java
index 2d89348a1e..05b38e0bed 100644
--- a/java/org/apache/jasper/compiler/ParserController.java
+++ b/java/org/apache/jasper/compiler/ParserController.java
@@ -20,7 +20,8 @@ import java.io.BufferedInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.nio.file.Paths;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayDeque;
 import java.util.Deque;
 
@@ -198,7 +199,12 @@ class ParserController implements TagConstants {
 
         boolean processingTagInJar = jar != null && baseDirStack.peekFirst() 
!= null &&
                 baseDirStack.peekFirst().startsWith(TAGS_IN_JAR_LOCATION);
-        String absFileName = resolveFileName(inFileName);
+        String absFileName = null;
+        try {
+            absFileName = resolveFileName(inFileName);
+        } catch (URISyntaxException e) {
+            err.jspError("jsp.error.invalid.includeInTagFileJar", inFileName, 
jar.getJarFileURL().toString());
+        }
         if (processingTagInJar && 
!absFileName.startsWith(TAGS_IN_JAR_LOCATION)) {
             /*
              * An included file is being parsed that was included from the 
standard location for tag files in JAR but
@@ -529,11 +535,12 @@ class ParserController implements TagConstants {
      * The 'root' file is always an 'absolute' path, so no need to put an
      * initial value in the baseDirStack.
      */
-    private String resolveFileName(String inFileName) {
+    private String resolveFileName(String inFileName) throws 
URISyntaxException {
         String fileName = inFileName.replace('\\', '/');
         boolean isAbsolute = fileName.startsWith("/");
         if (!isAbsolute) {
-            fileName = Paths.get(baseDirStack.peekFirst() + 
fileName).normalize().toString().replace('\\', '/');
+            URI uri = new URI(baseDirStack.peekFirst() + fileName);
+            fileName = uri.normalize().toString();
         }
         String baseDir = fileName.substring(0, fileName.lastIndexOf('/') + 1);
         baseDirStack.addFirst(baseDir);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to