[ https://issues.apache.org/jira/browse/SHIRO-530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17072790#comment-17072790 ]
atomicknight commented on SHIRO-530: ------------------------------------ [~bmarwell], the change looks good! My only comment is that I would suggest throwing an exception for backslashes in the key instead of silently stripping them (as was suggested in one of the comments for pull request #209). Even if this behavior is documented, it can be easily overlooked (especially if the key and value are handled differently), and I feel that it is always better to be explicit about syntax (i.e. rejecting invalid inputs) when possible. Just my opinion - will defer to your judgment. Thanks! > 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 > Time Spent: 2h 50m > Remaining Estimate: 0h > > 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)