fix(api): handle malformed URI parameters gracefully in router

This commit is contained in:
coo1estguy
2026-09-19 14:58:53 +05:30
parent d876be851f
commit 1a6ba84b3a
2 changed files with 15 additions and 1 deletions
+6 -1
View File
@@ -66,7 +66,12 @@ export class Router {
const seg = route.segments[i]!;
const part = parts[i]!;
if (seg.startsWith(":")) {
params[seg.slice(1)] = decodeURIComponent(part);
try {
params[seg.slice(1)] = decodeURIComponent(part);
} catch {
ok = false;
break;
}
} else if (seg !== part) {
ok = false;
break;
+9
View File
@@ -1155,4 +1155,13 @@ describe("Router param decoding", () => {
expect(router.match("GET", "/v1/users/123/extra")).toBeNull();
expect(router.match("POST", "/v1/users/123")).toBeNull();
});
it("handles malformed URI parameters gracefully without throwing", () => {
const router = new Router();
const handler = vi.fn();
router.get("/v1/users/:id", handler);
expect(router.match("GET", "/v1/users/%FF")).toBeNull();
expect(router.match("GET", "/v1/users/%c0%af")).toBeNull();
});
});