common: allow "\/" as escape sequence

mp_parse_escape() is used by the JSON parser in json.c, and JSON allows
escaping "/" (solidus).

Although it makes no sense, apparently Javascript traditionally allowed
that as escape sequence for working around issues with embedding
Javascript in HTML. (Or something like this must have been the history
of this issue.) Since it's valid in Javascript, it had to be valid in
JSON as well, and JSON explicitly specifies it as valid escape.

Fixes #2694.
This commit is contained in:
wm4 2016-01-08 09:13:33 +01:00
parent 2dd8982f73
commit 6a73fcc9ed
1 changed files with 2 additions and 1 deletions

View File

@ -148,7 +148,7 @@ void mp_append_utf8_bstr(void *talloc_ctx, struct bstr *buf, uint32_t codepoint)
bstr_xappend(talloc_ctx, buf, (bstr){data, output - data});
}
// Parse a C-style escape beginning at code, and append the result to *str
// Parse a C/JSON-style escape beginning at code, and append the result to *str
// using talloc. The input string (*code) must point to the first character
// after the initial '\', and after parsing *code is set to the first character
// after the current escape.
@ -161,6 +161,7 @@ static bool mp_parse_escape(void *talloc_ctx, bstr *dst, bstr *code)
switch (code->start[0]) {
case '"': replace = '"'; break;
case '\\': replace = '\\'; break;
case '/': replace = '/'; break;
case 'b': replace = '\b'; break;
case 'f': replace = '\f'; break;
case 'n': replace = '\n'; break;