Skip to content

Commit 63cd1b4

Browse files
committed
v8: use primordials in startup_snapshot.js
Replace native array methods (.push, .shift) with primordials (ArrayPrototypePush, ArrayPrototypeShift) in lib/internal/v8/startup_snapshot.js for consistency and security. This improves protection against prototype pollution and aligns with the primordials pattern used throughout the codebase.
1 parent 05d6b9b commit 63cd1b4

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

lib/internal/v8/startup_snapshot.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
'use strict';
22

3+
const {
4+
ArrayPrototypePush,
5+
ArrayPrototypeShift,
6+
} = primordials;
7+
38
const {
49
validateFunction,
510
} = require('internal/validators');
@@ -38,7 +43,7 @@ const deserializeCallbacks = [];
3843
let deserializeCallbackIsSet = false;
3944
function runDeserializeCallbacks() {
4045
while (deserializeCallbacks.length > 0) {
41-
const { 0: callback, 1: data } = deserializeCallbacks.shift();
46+
const { 0: callback, 1: data } = ArrayPrototypeShift(deserializeCallbacks);
4247
callback(data);
4348
}
4449
}
@@ -54,30 +59,30 @@ function addDeserializeCallback(callback, data) {
5459
setDeserializeCallback(runDeserializeCallbacks);
5560
deserializeCallbackIsSet = true;
5661
}
57-
deserializeCallbacks.push([callback, data]);
62+
ArrayPrototypePush(deserializeCallbacks, [callback, data]);
5863
}
5964

6065
const serializeCallbacks = [];
6166
const afterUserSerializeCallbacks = []; // Callbacks to run after user callbacks
6267
function runSerializeCallbacks() {
6368
while (serializeCallbacks.length > 0) {
64-
const { 0: callback, 1: data } = serializeCallbacks.shift();
69+
const { 0: callback, 1: data } = ArrayPrototypeShift(serializeCallbacks);
6570
callback(data);
6671
}
6772
while (afterUserSerializeCallbacks.length > 0) {
68-
const { 0: callback, 1: data } = afterUserSerializeCallbacks.shift();
73+
const { 0: callback, 1: data } = ArrayPrototypeShift(afterUserSerializeCallbacks);
6974
callback(data);
7075
}
7176
}
7277

7378
function addSerializeCallback(callback, data) {
7479
throwIfNotBuildingSnapshot();
7580
validateFunction(callback, 'callback');
76-
serializeCallbacks.push([callback, data]);
81+
ArrayPrototypePush(serializeCallbacks, [callback, data]);
7782
}
7883

7984
function addAfterUserSerializeCallback(callback, data) {
80-
afterUserSerializeCallbacks.push([callback, data]);
85+
ArrayPrototypePush(afterUserSerializeCallbacks, [callback, data]);
8186
}
8287

8388
function initializeCallbacks() {

0 commit comments

Comments
 (0)