Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a33ed9b

Browse filesBrowse files
Renegade334aduh95
authored andcommitted
inspector: ensure adequate memory allocation for Binary::toBase64
PR-URL: #59870 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 758271a commit a33ed9b
Copy full SHA for a33ed9b

File tree

Expand file treeCollapse file tree

2 files changed

+23
-9
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+23
-9
lines changed
Open diff view settings
Collapse file

‎src/inspector/node_string.cc‎

Copy file name to clipboardExpand all lines: src/inspector/node_string.cc
+4-4Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,15 @@ size_t StringUtil::CharacterCount(const std::string_view s) {
108108
}
109109

110110
String Binary::toBase64() const {
111-
MaybeStackBuffer<char> buffer;
112-
size_t str_len = simdutf::base64_length_from_binary(bytes_->size());
113-
buffer.SetLength(str_len);
111+
size_t expected_base64_length =
112+
simdutf::base64_length_from_binary(bytes_->size());
113+
MaybeStackBuffer<char> buffer(expected_base64_length);
114114

115115
size_t len =
116116
simdutf::binary_to_base64(reinterpret_cast<const char*>(bytes_->data()),
117117
bytes_->size(),
118118
buffer.out());
119-
CHECK_EQ(len, str_len);
119+
CHECK_EQ(len, expected_base64_length);
120120
return buffer.ToString();
121121
}
122122

Collapse file

‎test/parallel/test-inspector-network-data-received.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-inspector-network-data-received.js
+19-5Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ const assert = require('node:assert');
1111
const { waitUntil } = require('../common/inspector-helper');
1212
const { setTimeout } = require('node:timers/promises');
1313

14+
// The complete payload string received by the network agent
15+
const payloadString = `Hello, world${'.'.repeat(4096)}`;
16+
1417
const session = new inspector.Session();
1518
session.connect();
1619
session.post('Network.enable');
@@ -67,9 +70,20 @@ async function triggerNetworkEvents(requestId, charset) {
6770
});
6871
await setTimeout(1);
6972

70-
Network.loadingFinished({
73+
// Test inspector binary conversions with large input
74+
const chunk3 = Buffer.allocUnsafe(4096).fill('.');
75+
Network.dataReceived({
7176
requestId,
7277
timestamp: 5,
78+
dataLength: chunk3.byteLength,
79+
encodedDataLength: chunk3.byteLength,
80+
data: chunk3,
81+
});
82+
await setTimeout(1);
83+
84+
Network.loadingFinished({
85+
requestId,
86+
timestamp: 6,
7387
});
7488
}
7589

@@ -116,7 +130,7 @@ test('should stream Network.dataReceived with data chunks', async () => {
116130

117131
const data = Buffer.concat(chunks);
118132
assert.strictEqual(data.byteLength, totalDataLength, data);
119-
assert.strictEqual(data.toString('utf8'), 'Hello, world');
133+
assert.strictEqual(data.toString('utf8'), payloadString);
120134
});
121135

122136
test('Network.streamResourceContent should send all buffered chunks', async () => {
@@ -131,7 +145,7 @@ test('Network.streamResourceContent should send all buffered chunks', async () =
131145
const { bufferedData } = await session.post('Network.streamResourceContent', {
132146
requestId,
133147
});
134-
assert.strictEqual(Buffer.from(bufferedData, 'base64').toString('utf8'), 'Hello, world');
148+
assert.strictEqual(Buffer.from(bufferedData, 'base64').toString('utf8'), payloadString);
135149
});
136150

137151
test('Network.streamResourceContent should reject if request id not found', async () => {
@@ -158,7 +172,7 @@ test('Network.getResponseBody should send all buffered binary data', async () =>
158172
requestId,
159173
});
160174
assert.strictEqual(base64Encoded, true);
161-
assert.strictEqual(body, Buffer.from('Hello, world').toString('base64'));
175+
assert.strictEqual(body, Buffer.from(payloadString).toString('base64'));
162176
});
163177

164178
test('Network.getResponseBody should send all buffered text data', async () => {
@@ -174,5 +188,5 @@ test('Network.getResponseBody should send all buffered text data', async () => {
174188
requestId,
175189
});
176190
assert.strictEqual(base64Encoded, false);
177-
assert.strictEqual(body, 'Hello, world');
191+
assert.strictEqual(body, payloadString);
178192
});

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.