janhoy commented on a change in pull request #593:
URL: https://github.com/apache/solr/pull/593#discussion_r798946218



##########
File path: solr/core/src/java/org/apache/solr/filestore/DistribPackageStore.java
##########
@@ -94,8 +94,18 @@ private static Path _getRealPath(String path, Path solrHome) 
{
     if (!path.isEmpty() && path.charAt(0) != File.separatorChar) {
       path = File.separator + path;
     }
-    // Use concat because path might start with a slash and be incorrectly 
interpreted as absolute
-    return solrHome.resolve(PackageStoreAPI.PACKAGESTORE_DIRECTORY + path);
+    if (path.startsWith("\\\\")) { // Windows absolute UNC
+      throw new SolrException(BAD_REQUEST, "Illegal path " + path);
+    }
+    while (path.startsWith("/")) { // Trim all leading slashes

Review comment:
       Yes, and the reason the old code added a leading slash was that it id 
string concatenation `PackageStoreAPI.PACKAGESTORE_DIRECTORY + path`, while the 
new code does `resolve(path)`. With string concat you need a leading slash to 
get a sub folder of pkgStore, while if you have a leading slash with 
Path.resolve, you end up with a an absolute path. However I'll re-factor this 
whole part and add some tests.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



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

Reply via email to