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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]