You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jiangwei Liu (Jira)" <ji...@apache.org> on 2022/08/04 09:01:00 UTC

[jira] [Commented] (IO-770) FilenameUtils#getFullPathNoEndSeparator has issues with windows and underscore in hostname

    [ https://issues.apache.org/jira/browse/IO-770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17575136#comment-17575136 ] 

Jiangwei Liu commented on IO-770:
---------------------------------

Hi Sita Geßner ,

I investigated this problem, the following may be helpful to you:

It is because that the result of the method FilenameUtils.isRFC3986HostName("sub_1.example.com") is false.
the pattern of the hostname is "^[a-zA-Z0-9][a-zA-Z0-9-]*$", and defined as:
Pattern REG_NAME_PART_PATTERN = Pattern.compile("^[a-zA-Z0-9][a-zA-Z0-9-]*$");

FYI:
"sub_1.example.com" is not a valid host name according to RFC 3986,
because the underscore(_) is not legal in domain names per RFC 1034.

> FilenameUtils#getFullPathNoEndSeparator has issues with windows and underscore in hostname
> ------------------------------------------------------------------------------------------
>
>                 Key: IO-770
>                 URL: https://issues.apache.org/jira/browse/IO-770
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 2.7, 2.8.0, 2.9.0, 2.10.0, 2.11.0
>            Reporter: Sita Geßner
>            Priority: Major
>
> After updating commons-io to version 2.11.0 there is an issue with FilenameUtils#getFullPathNoEndSeparator only when using Windows.
> When using Linux there are no problems.
> getFullPathNoEndSeparator returns  null if the hostname of the path contains an underscore. This issue occured since version 2.7
> {code:java}
>     private static void commonsIo() {
>         final String result = getSubFolderFromFile(new File("\\\\sub_1.example.com\\path\\subfolder\\test.pdf"));
>         // Fails in common-io:2.11.0 b/c result is null.
>         System.out.println("result should be \"subfolder\", but it is: " + result);
>     }
>     private static String getSubFolderFromFile(final File file) {
>         return FilenameUtils.getBaseName(FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath()));
>     }
> {code}
> We know hostnames are not supposed to have underscores, but windows allows it and  unfortunatly we have to deal with this.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)