Skip to content

Commit 5b5e519

Browse files
MrJithilrichardlau
authored andcommitted
lib: fix compileFunction throws range error for negative numbers
PR-URL: #49855 Backport-PR-URL: #51004 Fixes: #49848 Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent 58c7034 commit 5b5e519

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

lib/internal/vm.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const {
1616
validateObject,
1717
validateString,
1818
validateStringArray,
19-
validateUint32,
19+
validateInt32,
2020
} = require('internal/validators');
2121
const {
2222
ERR_INVALID_ARG_TYPE,
@@ -46,8 +46,8 @@ function internalCompileFunction(code, params, options) {
4646
} = options;
4747

4848
validateString(filename, 'options.filename');
49-
validateUint32(columnOffset, 'options.columnOffset');
50-
validateUint32(lineOffset, 'options.lineOffset');
49+
validateInt32(columnOffset, 'options.columnOffset');
50+
validateInt32(lineOffset, 'options.lineOffset');
5151
if (cachedData !== undefined)
5252
validateBuffer(cachedData, 'options.cachedData');
5353
validateBoolean(produceCachedData, 'options.produceCachedData');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
'use strict';
2+
3+
require('../common');
4+
5+
const assert = require('assert');
6+
const { compileFunction } = require('node:vm');
7+
8+
const min = -2147483648;
9+
const max = 2147483647;
10+
11+
compileFunction('', [], { lineOffset: min, columnOffset: min });
12+
compileFunction('', [], { lineOffset: max, columnOffset: max });
13+
14+
assert.throws(
15+
() => {
16+
compileFunction('', [], { lineOffset: min - 1, columnOffset: max });
17+
},
18+
{
19+
code: 'ERR_OUT_OF_RANGE',
20+
name: 'RangeError',
21+
message: /The value of "options\.lineOffset" is out of range/,
22+
}
23+
);
24+
25+
assert.throws(
26+
() => {
27+
compileFunction('', [], { lineOffset: min, columnOffset: min - 1 });
28+
},
29+
{
30+
code: 'ERR_OUT_OF_RANGE',
31+
name: 'RangeError',
32+
message: /The value of "options\.columnOffset" is out of range/,
33+
}
34+
);

0 commit comments

Comments
 (0)