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