[ https://issues.apache.org/jira/browse/SHIRO-530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17070509#comment-17070509 ]
Benjamin Marwell commented on SHIRO-530: ---------------------------------------- Thanks for the hint, I now got it! The actual error seems to be in: {code:java} private static boolean isCharEscaped(CharSequence s, int index) { return index > 0 && s.charAt(index) == ESCAPE_TOKEN; } {code} It will return true for both slashes. It will then not be added because of: {code:java} if (!isCharEscaped(line, i)){ valueBuffer.append(c); } {code} Thanks for your findings! :) > INI parser does not properly handled backslashes at end of values > ----------------------------------------------------------------- > > Key: SHIRO-530 > URL: https://issues.apache.org/jira/browse/SHIRO-530 > Project: Shiro > Issue Type: Bug > Components: Configuration > Affects Versions: 1.2.3 > Reporter: atomicknight > Priority: Major > > The backslash character is overloaded for use as a continuation delimiter as > well as an escape character. However, the parsing logic does not presently > handle this character consistently, which prevents the use of odd numbers of > backslashes at the end of values. Here is a matrix of examples: > ||Original value||Parsed value||Notes|| > |{noformat} > key=value\ > {noformat}|{noformat} > key=value > {noformat}|Backslash treated as continuation delimiter| > |{noformat} > key=value\\ > {noformat}|{noformat} > key=value\\ > {noformat}|Backslashes treated as literal characters| > |{noformat} > key=value\\\ > {noformat}|{noformat} > key=value\\ > {noformat}|Final backslash treated as continuation delimiter, other > backslashes treated as literal characters| > |{noformat} > key=value\\\\ > {noformat}|{noformat} > key=value\\\\ > {noformat}|Backslashes treated as literal characters| > There is a comment in Ini.Section#isContinued(String) that states: > {quote} > //find the number of backslashes at the end of the line. If an even number, > the > //backslashes are considered escaped. If an odd number, the line is > considered continued on the next line > {quote} > However, there is no unescaping logic in either > Ini.Section#toMapProps(String) (which calls #isContinued) or > IniSection#splitKeyValue(String). -- This message was sent by Atlassian Jira (v8.3.4#803005)