mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8235361: JAR Class-Path no longer accepts relative URLs encoding absolute Windows paths (e.g "/C:/...")
Reviewed-by: alanb, mchung
This commit is contained in:
parent
eec0e71c04
commit
4627488e74
2 changed files with 24 additions and 19 deletions
|
@ -1125,27 +1125,21 @@ public class URLClassPath {
|
|||
|
||||
/**
|
||||
* Attempt to return a file URL by resolving input against a base file
|
||||
* URL. The input is an absolute or relative file URL that encodes a
|
||||
* file path.
|
||||
*
|
||||
* @apiNote Nonsensical input such as a Windows file path with a drive
|
||||
* letter cannot be disambiguated from an absolute URL so will be rejected
|
||||
* (by returning null) by this method.
|
||||
*
|
||||
* URL.
|
||||
* @return the resolved URL or null if the input is an absolute URL with
|
||||
* a scheme other than file (ignoring case)
|
||||
* @throws MalformedURLException
|
||||
*/
|
||||
static URL tryResolveFile(URL base, String input) throws MalformedURLException {
|
||||
int index = input.indexOf(':');
|
||||
boolean isFile;
|
||||
if (index >= 0) {
|
||||
String scheme = input.substring(0, index);
|
||||
isFile = "file".equalsIgnoreCase(scheme);
|
||||
} else {
|
||||
isFile = true;
|
||||
URL retVal = new URL(base, input);
|
||||
if (input.indexOf(':') >= 0 &&
|
||||
!"file".equalsIgnoreCase(retVal.getProtocol())) {
|
||||
// 'input' contains a ':', which might be a scheme, or might be
|
||||
// a Windows drive letter. If the protocol for the resolved URL
|
||||
// isn't "file:", it should be ignored.
|
||||
return null;
|
||||
}
|
||||
return (isFile) ? new URL(base, input) : null;
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue