From 75267987fce621d2f295540d5193451a345b6405 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:28:03 +0200 Subject: [PATCH] Fix: Add recursive search max depth (20) --- backend/src/services/secret/secret-fns.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/src/services/secret/secret-fns.ts b/backend/src/services/secret/secret-fns.ts index 24c2bd811..edd656b55 100644 --- a/backend/src/services/secret/secret-fns.ts +++ b/backend/src/services/secret/secret-fns.ts @@ -92,7 +92,8 @@ const buildHierarchy = (folders: TSecretFolders[]): FolderMap => { const generatePaths = ( map: FolderMap, parentId: string = "null", - basePath: string = "" + basePath: string = "", + currentDepth: number = 0 ): { path: string; folderId: string }[] => { const children = map[parentId || "null"] || []; let paths: { path: string; folderId: string }[] = []; @@ -105,13 +106,19 @@ const generatePaths = ( // eslint-disable-next-line no-nested-ternary const currPath = basePath === "" ? (isRootFolder ? "/" : `/${child.name}`) : `${basePath}/${child.name}`; + // Add the current path paths.push({ path: currPath, folderId: child.id - }); // Add the current path + }); - // Recursively generate paths for children, passing down the formatted pathh - const childPaths = generatePaths(map, child.id, currPath); + // We make sure that the max depth doesn't exceed 20. + // We do this to make as a "circuit break", basically to ensure that we can't encounter any potential memory leaks. + if (currentDepth >= 20) { + return; + } + // Recursively generate paths for children, passing down the formatted path + const childPaths = generatePaths(map, child.id, currPath, currentDepth + 1); paths = paths.concat( childPaths.map((p) => ({ path: p.path,