From 61ce3dd6b71723fb6d9f0f1bd28b321caf8ecf96 Mon Sep 17 00:00:00 2001 From: ealmloff Date: Tue, 1 Aug 2023 12:29:35 -0500 Subject: [PATCH] Reject all external routes when parsing a route (#1272) * reject all external routes when parsing a route * fix children routers --- packages/router-macro/src/lib.rs | 8 +++++++- packages/router-macro/src/route_tree.rs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/router-macro/src/lib.rs b/packages/router-macro/src/lib.rs index 3b5ec85d7..c949cf2f4 100644 --- a/packages/router-macro/src/lib.rs +++ b/packages/router-macro/src/lib.rs @@ -485,7 +485,13 @@ impl RouteEnum { let mut segments = route.split('/'); // skip the first empty segment if s.starts_with('/') { - segments.next(); + let _ = segments.next(); + } + else { + // if this route does not start with a slash, it is not a valid route + return Err(dioxus_router::routable::RouteParseError { + attempted_routes: Vec::new(), + }); } let mut errors = Vec::new(); diff --git a/packages/router-macro/src/route_tree.rs b/packages/router-macro/src/route_tree.rs index d855d435a..399d20e5e 100644 --- a/packages/router-macro/src/route_tree.rs +++ b/packages/router-macro/src/route_tree.rs @@ -367,7 +367,7 @@ impl<'a> RouteTreeSegmentData<'a> { let child_name = &child.ident; quote! { - let mut trailing = String::new(); + let mut trailing = String::from("/"); for seg in segments.clone() { trailing += seg; trailing += "/";