39 lines
1.5 KiB
Diff
39 lines
1.5 KiB
Diff
diff --git a/packages/core/scanner.ts b/packages/core/scanner.ts
|
|
index xxxxxxx..xxxxxxx 100644
|
|
--- a/packages/core/scanner.ts
|
|
+++ b/packages/core/scanner.ts
|
|
@@ -67,7 +67,7 @@ interface ModulesScanParameters {
|
|
moduleDefinition: ModuleDefinition;
|
|
scope?: Type<unknown>[];
|
|
- ctxRegistry?: (ForwardReference | DynamicModule | Type<unknown>)[];
|
|
+ ctxRegistry?: Set<ForwardReference | DynamicModule | Type<unknown>>;
|
|
overrides?: ModuleOverride[];
|
|
lazy?: boolean;
|
|
}
|
|
@@ -106,7 +106,7 @@ export class DependenciesScanner {
|
|
public async scanForModules({
|
|
moduleDefinition,
|
|
lazy,
|
|
scope = [],
|
|
- ctxRegistry = [],
|
|
+ ctxRegistry = new Set(),
|
|
overrides = [],
|
|
}: ModulesScanParameters): Promise<Module[]> {
|
|
const { moduleRef: moduleInstance, inserted: moduleInserted } =
|
|
@@ -123,7 +123,7 @@ export class DependenciesScanner {
|
|
- ctxRegistry.push(moduleDefinition);
|
|
+ // CWE-407 fix: Set.add() is O(1); was Array.push() feeding an O(n) .includes()
|
|
+ ctxRegistry.add(moduleDefinition);
|
|
|
|
if (this.isForwardReference(moduleDefinition)) {
|
|
moduleDefinition = (moduleDefinition as ForwardReference).forwardRef();
|
|
@@ -152,7 +152,7 @@ export class DependenciesScanner {
|
|
if (!innerModule) {
|
|
throw new InvalidModuleException(moduleDefinition, index, scope);
|
|
}
|
|
- if (ctxRegistry.includes(innerModule)) {
|
|
+ // CWE-407 fix: Set.has() is O(1); was Array.includes() = O(n) scan
|
|
+ if (ctxRegistry.has(innerModule)) {
|
|
continue;
|
|
}
|
|
const moduleRefs = await this.scanForModules({
|