ffi: validate fast 32-bit integer argument ranges · nodejs/node@b348ed7 · GitHub
Skip to content

Commit b348ed7

Browse files
trivikraduh95
authored andcommitted
ffi: validate fast 32-bit integer argument ranges
Add i32, int32, u32, and uint32 to Fast API integer validation so optimized calls reject invalid values instead of allowing V8 to coerce or truncate them. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.6-sol PR-URL: #64691 Fixes: #64690 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Paolo Insogna <paolo@cowtech.it>
1 parent 48f4cfb commit b348ed7

3 files changed

Lines changed: 20 additions & 1 deletion

File tree

lib/internal/ffi/fast-api.js

Lines changed: 4 additions & 0 deletions

src/ffi/fast.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ bool SignatureNeedsFastIntegerValidation(const FFIFunction& fn) {
164164
for (const std::string& name : fn.arg_type_names) {
165165
if (name == "bool" || name == "char" || name == "i8" || name == "int8" ||
166166
name == "u8" || name == "uint8" || name == "i16" || name == "int16" ||
167-
name == "u16" || name == "uint16" || name == "i64" || name == "int64" ||
167+
name == "u16" || name == "uint16" || name == "i32" || name == "int32" ||
168+
name == "u32" || name == "uint32" || name == "i64" || name == "int64" ||
168169
name == "u64" || name == "uint64") {
169170
return true;
170171
}

test/ffi/test-ffi-fast-integer-validation.js

Lines changed: 14 additions & 0 deletions

0 commit comments

Comments
 (0)