mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-09-24 15:49:09 +00:00
2edbeae02c
Remove unused code, assets, and stale config entries.
20 lines
694 B
TypeScript
20 lines
694 B
TypeScript
/**
|
|
* Best-effort regex safety guard for user-provided patterns.
|
|
*
|
|
* Reject nested quantifier shapes such as `(a+)+`, `(a*)*`, `(a+){2,}`
|
|
* that are common catastrophic-backtracking sources.
|
|
*/
|
|
export type RegexSafetyReason = "nested_quantifier";
|
|
|
|
export type RegexSafetyCheckResult =
|
|
| { safe: true }
|
|
| { safe: false; reason: RegexSafetyReason };
|
|
|
|
export function checkRegexSafetyPattern(pattern: string): RegexSafetyCheckResult {
|
|
const nestedUnboundedQuantifier = /\((?:\?:)?[^)]*(?:\+|\*|\{\d+,\}|\{,\d+\})[^)]*\)(?:\+|\*|\{\d+,\}|\{,\d+\})/;
|
|
if (nestedUnboundedQuantifier.test(pattern)) {
|
|
return { safe: false, reason: "nested_quantifier" };
|
|
}
|
|
return { safe: true };
|
|
}
|