38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
# UNDF: UNDF-2026-000000339
|
|
diff --git a/lib/hmr/HotModuleReplacement.runtime.js b/lib/hmr/HotModuleReplacement.runtime.js
|
|
index xxxxxxx..xxxxxxx 100644
|
|
--- a/lib/hmr/HotModuleReplacement.runtime.js
|
|
+++ b/lib/hmr/HotModuleReplacement.runtime.js
|
|
@@ -42,7 +42,8 @@ module.exports = function (parentHot) {
|
|
hot = {
|
|
// ...
|
|
};
|
|
module.parents = currentParents;
|
|
- module.children = [];
|
|
+ // CWE-407 fix: use Set-backed arrays for O(1) dedup in require() hot path.
|
|
+ module.children = [];
|
|
+ module._childrenSet = new Set();
|
|
}
|
|
|
|
// ...
|
|
|
|
@@ -57,10 +57,10 @@ module.exports = function (parentHot) {
|
|
if (me.hot.active) {
|
|
if (installedModules[request]) {
|
|
var parents = installedModules[request].parents;
|
|
- if (parents.indexOf(moduleId) === -1) {
|
|
+ if (!installedModules[request]._parentsSet) installedModules[request]._parentsSet = new Set(parents);
|
|
+ if (!installedModules[request]._parentsSet.has(moduleId)) {
|
|
parents.push(moduleId);
|
|
+ installedModules[request]._parentsSet.add(moduleId);
|
|
}
|
|
} else {
|
|
currentParents = [moduleId];
|
|
currentChildModule = request;
|
|
}
|
|
- if (me.children.indexOf(request) === -1) {
|
|
+ if (!me._childrenSet.has(request)) {
|
|
me.children.push(request);
|
|
+ me._childrenSet.add(request);
|
|
}
|
|
}
|