Do not access out of bounds arguments (#6792)
Potentially out of bounds arguments should not just be directly accessed, instead use a ternary operator to check length.
This commit is contained in:
parent
e67cfc5b31
commit
2b710d0387
@ -5,6 +5,6 @@ var some = function () {
|
|||||||
|
|
||||||
var collect = function () {
|
var collect = function () {
|
||||||
let since = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
let since = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||||
let userid = arguments[1];
|
let userid = arguments.length > 1 ? arguments[1] : undefined;
|
||||||
console.log(userid);
|
console.log(userid);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -19,8 +19,8 @@ const buildLooseDestructuredDefaultParam = template(`
|
|||||||
let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;
|
let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;
|
||||||
`);
|
`);
|
||||||
|
|
||||||
const buildArgumentsAccess = template(`
|
const buildSafeArgumentsAccess = template(`
|
||||||
let $0 = arguments[$1];
|
let $0 = arguments.length > $1 ? arguments[$1] : undefined;
|
||||||
`);
|
`);
|
||||||
|
|
||||||
function isSafeBinding(scope, node) {
|
function isSafeBinding(scope, node) {
|
||||||
@ -110,7 +110,10 @@ export default function convertFunctionParams(path, loose) {
|
|||||||
});
|
});
|
||||||
body.push(defNode);
|
body.push(defNode);
|
||||||
} else if (firstOptionalIndex !== null) {
|
} else if (firstOptionalIndex !== null) {
|
||||||
const defNode = buildArgumentsAccess([param.node, t.numericLiteral(i)]);
|
const defNode = buildSafeArgumentsAccess([
|
||||||
|
param.node,
|
||||||
|
t.numericLiteral(i),
|
||||||
|
]);
|
||||||
body.push(defNode);
|
body.push(defNode);
|
||||||
} else if (param.isObjectPattern() || param.isArrayPattern()) {
|
} else if (param.isObjectPattern() || param.isArrayPattern()) {
|
||||||
const uid = path.scope.generateUidIdentifier("ref");
|
const uid = path.scope.generateUidIdentifier("ref");
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
function foo() {
|
function foo() {
|
||||||
var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "foo";
|
var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "foo";
|
||||||
var b = arguments[1];
|
var b = arguments.length > 1 ? arguments[1] : undefined;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,13 @@
|
|||||||
function fn(a1) {
|
function fn(a1) {
|
||||||
var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;
|
var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;
|
||||||
var _arguments$ = arguments[2],
|
|
||||||
a3 = _arguments$.a3,
|
|
||||||
a4 = _arguments$.a4;
|
|
||||||
var a5 = arguments[3];
|
|
||||||
|
|
||||||
var _ref = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
|
var _ref = arguments.length > 2 ? arguments[2] : undefined,
|
||||||
a6 = _ref.a6,
|
a3 = _ref.a3,
|
||||||
a7 = _ref.a7;
|
a4 = _ref.a4;
|
||||||
}
|
|
||||||
|
var a5 = arguments.length > 3 ? arguments[3] : undefined;
|
||||||
|
|
||||||
|
var _ref2 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
|
||||||
|
a6 = _ref2.a6,
|
||||||
|
a7 = _ref2.a7;
|
||||||
|
}
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
// #3861
|
// #3861
|
||||||
function t() {
|
function t() {
|
||||||
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "default";
|
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "default";
|
||||||
var _arguments$ = arguments[1],
|
|
||||||
a = _arguments$.a,
|
var _ref = arguments.length > 1 ? arguments[1] : undefined,
|
||||||
b = _arguments$.b;
|
a = _ref.a,
|
||||||
|
b = _ref.b;
|
||||||
|
|
||||||
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
||||||
args[_key - 2] = arguments[_key];
|
args[_key - 2] = arguments[_key];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user