buffer: prevent string write offset overflow · nodejs/node@13e7d54 · GitHub
Skip to content

Commit 13e7d54

Browse files
mcollinaaduh95
authored andcommitted
buffer: prevent string write offset overflow
Reject offsets outside the destination buffer before subtracting from its length in SlowWriteString. Normalize wrapper arguments once so validated values reach the native binding. Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #65043 Reviewed-By: Robert Nagy <ronagy@icloud.com>
1 parent 537feec commit 13e7d54

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

lib/internal/buffer.js

Lines changed: 12 additions & 3 deletions

src/node_buffer.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,6 +1734,11 @@ void SlowWriteString(const FunctionCallbackInfo<Value>& args) {
17341734
size_t max_length = 0;
17351735

17361736
THROW_AND_RETURN_IF_OOB(ParseArrayIndex(env, args[2], 0, &offset));
1737+
if (offset > ts_obj_length) {
1738+
return node::THROW_ERR_BUFFER_OUT_OF_BOUNDS(
1739+
env, "\"offset\" is outside of buffer bounds");
1740+
}
1741+
17371742
THROW_AND_RETURN_IF_OOB(
17381743
ParseArrayIndex(env, args[3], ts_obj_length - offset, &max_length));
17391744

test/parallel/test-buffer-write.js

Lines changed: 14 additions & 0 deletions

0 commit comments

Comments
 (0)