...
In general, for a particular escape character of the form '\X', the equivalent Java representation is:
Code Block |
---|
"\\X" |
Noncompliant Code Example
This noncompliant code example defines a method splitWords()
that finds matches between the String
literal and the input sequence. The programmer believes that String
literals can be used as is for regular expression patterns. Consequently, he initializes the string WORDS
to "\b", expecting that the string literal will hold the escape sequence for matching a word boundary. However, the Java compiler treats the "\b" as a Java escape sequence, and the string WORDS
silently compiles to a backspace character.
Code Block | ||
---|---|---|
| ||
public class BadSplitter { private final String WORDS = "\b"; // split on word boundaries public String[] splitWords(String input){ Pattern p = Pattern.compile(WORDS); String[] input_array = p.split(input); return input_array; } } |
Compliant Solution
This compliant solution shows the correctly escaped value of the String
literal WORDS
that results in a regular expression designed to split on word boundaries.
Code Block | ||
---|---|---|
| ||
public class GoodSplitter { private final String WORDS = "\\b"; // Allows splitting on word boundaries public String[] split(String input){ Pattern p = Pattern.compile(WORDS); String[] input_array = p.split(input); return input_array; } } |
Risk Assessment
Incorrect use of escape characters in String
literals can result in misinterpretation and potential corruption of data.
Guideline | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
IDS17-J | low | unlikely | high | P1 | L3 |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this guideline on the CERT website.
Bibliography
Wiki Markup |
---|
\[[API 2006|AA. Bibliography#API 06]\] [Class Pattern|http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html] "Backslashes, escapes, and quoting" \[[API 2006|AA. Bibliography#API 06]\] [Package java.sql|http://java.sun.com/javase/6/docs/api/java/sql/package-summary.html] \[[JLS 2005|AA. Bibliography#JLS 05]\] 3.10.6 Escape Sequences for Character and String Literals |
...