Safely resolve a user-supplied relative path under SRC_ROOT (blocks path traversal).
(relPath: string)
| 82 | |
| 83 | /** Safely resolve a user-supplied relative path under SRC_ROOT (blocks path traversal). */ |
| 84 | function safePath(relPath: string): string | null { |
| 85 | const resolved = path.resolve(SRC_ROOT, relPath); |
| 86 | if (!resolved.startsWith(SRC_ROOT)) return null; |
| 87 | return resolved; |
| 88 | } |
| 89 | |
| 90 | // --------------------------------------------------------------------------- |
| 91 | // Metadata Types |