diff --git a/src/protocol/parser/pass_tokenizer.rs b/src/protocol/parser/pass_tokenizer.rs index a1e29aabfa77e1c29d0fd3b0d9711ba67a30c6ec..86649664d3562b13ba6bf7e31a3c513dd9bc386c 100644 --- a/src/protocol/parser/pass_tokenizer.rs +++ b/src/protocol/parser/pass_tokenizer.rs @@ -456,11 +456,18 @@ impl PassTokenizer { source.consume(); if c == b'"' && prev_char != b'\\' { + // Unescaped string terminator prev_char = c; break; } - prev_char = c; + if prev_char == b'\\' && c == b'\\' { + // Escaped backslash, set prev_char to bogus to not conflict + // with escaped-" and unterminated string literal detection. + prev_char = b'\0'; + } else { + prev_char = c; + } } if prev_char != b'"' {