diff options
author | danielwippermann <daniel.wippermann@gmail.com> | 2020-08-17 23:48:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-17 17:48:15 -0400 |
commit | 93e2bfe22e5cc782e7d502616dad1fd70d26ae37 (patch) | |
tree | 1f77ac602026252595ae7ac334bedec4487a79a6 /std/encoding | |
parent | 95a6812e82fbac0826e5e230eef714ce85953125 (diff) |
fix(std/encoding/toml): Stop TOML parser from detecting numbers in strings. (#7064)
Before this patch the TOML parser would incorrect treat the string
"base64data0xdamaged" in a declaration as a hex number because the
corresponding check triggers even when the "0x" is inside a double
quoted string literal as long as it is followed by at least one hex
character.
Diffstat (limited to 'std/encoding')
-rw-r--r-- | std/encoding/testdata/string.toml | 1 | ||||
-rw-r--r-- | std/encoding/toml.ts | 2 | ||||
-rw-r--r-- | std/encoding/toml_test.ts | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/std/encoding/testdata/string.toml b/std/encoding/testdata/string.toml index 55e3fca34..05f425f11 100644 --- a/std/encoding/testdata/string.toml +++ b/std/encoding/testdata/string.toml @@ -31,3 +31,4 @@ trimmed in raw strings. withApostrophe = "What if it's not?" withSemicolon = "const message = 'hello world';" +withHexNumberLiteral = "Prevent bug from stripping string here ->0xabcdef" diff --git a/std/encoding/toml.ts b/std/encoding/toml.ts index bd6814ac3..121459dbf 100644 --- a/std/encoding/toml.ts +++ b/std/encoding/toml.ts @@ -218,7 +218,7 @@ class Parser { } // If binary / octal / hex - const hex = /(0(?:x|o|b)[0-9a-f_]*)[^#]/gi.exec(dataString); + const hex = /^(0(?:x|o|b)[0-9a-f_]*)[^#]/gi.exec(dataString); if (hex && hex[0]) { return hex[0].trim(); } diff --git a/std/encoding/toml_test.ts b/std/encoding/toml_test.ts index cc3d190b0..565fe1eeb 100644 --- a/std/encoding/toml_test.ts +++ b/std/encoding/toml_test.ts @@ -29,6 +29,8 @@ Deno.test({ "whitespace\n is preserved.", withApostrophe: "What if it's not?", withSemicolon: `const message = 'hello world';`, + withHexNumberLiteral: + "Prevent bug from stripping string here ->0xabcdef", }, }; const actual = parseFile(path.join(testFilesDir, "string.toml")); |