diff options
author | Vladimir Moskva <vladmos@google.com> | 2016-11-07 15:14:26 +0000 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2016-11-08 09:13:22 +0000 |
commit | 932c7c1bd922708426fcdadbcc1f106c7cd36271 (patch) | |
tree | d56e513ce06ae534442c9b88b7eaa0a538199df5 /src/main/java/com/google/devtools | |
parent | 1396286e3d8ad398b923c460fba8823876f652a8 (diff) |
Fixed StringIndexOutOfBoundsException in the lexer
--
MOS_MIGRATED_REVID=138387292
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/Lexer.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java index 71a3fd1b41..0ace1f2bcf 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java @@ -489,6 +489,12 @@ public final class Lexer { } } + // If the current position is beyond the end of the file, need to move it backwards + // Possible if the file ends with `r"\` (unterminated raw string literal with a backslash) + if (pos > buffer.length) { + pos = buffer.length; + } + error("unterminated string literal at eof", oldPos, pos); return new Token(TokenKind.STRING, oldPos, pos, bufferSlice(oldPos + 1, pos)); |