java-topology/defects/webpack/patch/webpack-0002-hmr-parents-children-set.patch

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);
}
}