mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
tools: update inspector_protocol to 547c5b8
PR-URL: https://github.com/nodejs/node/pull/51293 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
1 parent
39ea735091
commit
ef5bac0a46
3 files changed
+28
-2
No files matched your search
@@ -1386,7 +1386,7 @@ class JSONEncoder : public StreamingParserHandler {
|
||||
// Disallow overlong encodings for ascii characters, as these
|
||||
// would include " and other characters significant to JSON
|
||||
// string termination / control.
|
||||
if (codepoint < 0x7f)
|
||||
if (codepoint <= 0x7f)
|
||||
continue;
|
||||
// Invalid in UTF8, and can't be represented in UTF16 anyway.
|
||||
if (codepoint > 0x10ffff)
|
||||
|
||||
@@ -1325,6 +1325,25 @@ void WriteUTF8AsUTF16(StreamingParserHandler* writer, const std::string& utf8) {
|
||||
writer->HandleString16(SpanFrom(UTF8ToUTF16(SpanFrom(utf8))));
|
||||
}
|
||||
|
||||
TEST(JsonEncoder, OverlongEncodings) {
|
||||
std::string out;
|
||||
Status status;
|
||||
std::unique_ptr<StreamingParserHandler> writer =
|
||||
NewJSONEncoder(&GetTestPlatform(), &out, &status);
|
||||
|
||||
// We encode 0x7f, which is the DEL ascii character, as a 4 byte UTF8
|
||||
// sequence. This is called an overlong encoding, because only 1 byte
|
||||
// is needed to represent 0x7f as UTF8.
|
||||
std::vector<uint8_t> chars = {
|
||||
0xf0, // Starts 4 byte utf8 sequence
|
||||
0x80, // continuation byte
|
||||
0x81, // continuation byte w/ payload bit 7 set to 1.
|
||||
0xbf, // continuation byte w/ payload bits 0-6 set to 11111.
|
||||
};
|
||||
writer->HandleString8(SpanFrom(chars));
|
||||
EXPECT_EQ("\"\"", out); // Empty string means that 0x7f was rejected (good).
|
||||
}
|
||||
|
||||
TEST(JsonStdStringWriterTest, HelloWorld) {
|
||||
std::string out;
|
||||
Status status;
|
||||
@@ -1561,6 +1580,13 @@ TEST_F(JsonParserTest, UsAsciiDelCornerCase) {
|
||||
"string16: a\x7f\n"
|
||||
"map end\n",
|
||||
log_.str());
|
||||
|
||||
// We've seen an implementation of UTF16ToUTF8 which would replace the DEL
|
||||
// character with ' ', so this simple roundtrip tests the routines in
|
||||
// encoding_test_helper.h, to make test failures of the above easier to
|
||||
// diagnose.
|
||||
std::vector<uint16_t> utf16 = UTF8ToUTF16(SpanFrom(json));
|
||||
EXPECT_EQ(json, UTF16ToUTF8(SpanFrom(utf16)));
|
||||
}
|
||||
|
||||
TEST_F(JsonParserTest, Whitespace) {
|
||||
|
||||
@@ -1394,7 +1394,7 @@ class JSONEncoder : public StreamingParserHandler {
|
||||
// Disallow overlong encodings for ascii characters, as these
|
||||
// would include " and other characters significant to JSON
|
||||
// string termination / control.
|
||||
if (codepoint < 0x7f)
|
||||
if (codepoint <= 0x7f)
|
||||
continue;
|
||||
// Invalid in UTF8, and can't be represented in UTF16 anyway.
|
||||
if (codepoint > 0x10ffff)
|
||||
|
||||
Reference in new issue
Block a user