diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-fns.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-fns.ts index f1042d20c..95d2cdbf4 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-fns.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-fns.ts @@ -518,7 +518,10 @@ export const expandSecretReferencesFactory = ({ } if (referencedSecretValue) { - expandedValue = expandedValue.replaceAll(interpolationSyntax, referencedSecretValue); + expandedValue = expandedValue.replaceAll( + interpolationSyntax, + () => referencedSecretValue // prevents special characters from triggering replacement patterns + ); } } } diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts index 75b7fcca9..d49a183ae 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-service.ts @@ -150,9 +150,13 @@ export const secretV2BridgeServiceFactory = ({ } }); - if (referredSecrets.length !== references.length) + if ( + referredSecrets.length !== + new Set(references.map(({ secretKey, secretPath, environment }) => `${secretKey}.${secretPath}.${environment}`)) + .size // only count unique references + ) throw new BadRequestError({ - message: `Referenced secret not found. Found only ${diff( + message: `Referenced secret(s) not found: ${diff( references.map((el) => el.secretKey), referredSecrets.map((el) => el.key) ).join(",")}`