You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jason Loomis (JIRA)" <ji...@apache.org> on 2016/04/29 08:56:12 UTC

[jira] [Updated] (VALIDATOR-391) UrlValidator.isValid throws exception for FILEURLs

     [ 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)