[
https://issues.apache.org/jira/browse/VALIDATOR-391?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jason Loomis updated VALIDATOR-391:
-----------------------------------
Attachment: UrlValidator.java.patch
The attached patch resolves the NullPointerException in isValid() for file URLs
by verifying that 'authority' is not null prior to attempting to access any
members of the object. Also modified the check for "non-empty" string to match
a similar check performed in isValidAuthority().
Note: the URL in the example provided:
file:/C:/path/to/dir/
is not valid; the authority is missing entirely; a valid URL for this directory
would be:
file:///C:/path/to/dir/
However, the URLValidator should be able to handle either case.
This patch fixes a major bug with a very minor change.
> UrlValidator.isValid throws exception for FILEURLs
> --------------------------------------------------
>
> Key: VALIDATOR-391
> URL: https://issues.apache.org/jira/browse/VALIDATOR-391
> Project: Commons Validator
> Issue Type: Bug
> Components: Routines
> Affects Versions: 1.5.0
> Reporter: Mark E. Scott, Jr.
> Labels: easyfix
> Attachments: UrlValidator.java.patch
>
>
> In UrlValidator.java from v1.5.0, there is the following section which
> generates a null pointer exception, rendering isValid unusable for FILE URLs.
> {code:title=org/apache/commons/validator/routines/UrlValidator.java}
> if ("file".equals(scheme)) {// Special case - file: allows an empty authority
> if (!"".equals(authority)) {
> if (authority.contains(":")) { // but cannot allow trailing :
> return false;
> }
> }
> // drop through to continue validation
> }
> {code}
> In the case of a file URL given in my example below, authority is null, and
> thusly doesn't equal a blank string, so it drops down and calls
> authority.contains, which generates a NullPointerException.
> {code:title=Example to generate exception}
> File localFile = new File("c:\\path\\to\\dir\\");
> URL localURL = localFile.toURI().toURL();
> String urlString = localURL.toString(); // "file:/C:/path/to/dir/"
> String[] schemes = {"file"};
> UrlValidator urlValidator = new UrlValidator(schemes);
> urlValidator.isValid(urlString); // null pointer exception
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)