Skip to content

Commit

Permalink
Fix URL assertion failure found by fuzzing
Browse files Browse the repository at this point in the history
This aligns canonicalizeOpaquePathname() with the other canonicalize
functions.
Also elides a superfluous memory allocation.
  • Loading branch information
fhanau committed Oct 2, 2024
1 parent c2568c1 commit 3e6246a
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions src/workerd/jsg/url.c++
Original file line number Diff line number Diff line change
Expand Up @@ -614,8 +614,10 @@ kj::Maybe<kj::String> canonicalizeOpaquePathname(
// @see https://wicg.github.io/urlpattern/#canonicalize-an-opaque-pathname
if (pathname.size() == 0) return kj::str();
auto str = kj::str("fake:", pathname);
auto url = KJ_ASSERT_NONNULL(Url::tryParse(str.asPtr()));
return kj::str(url.getPathname());
KJ_IF_SOME(url, Url::tryParse(str.asPtr())) {
return kj::str(url.getPathname());
}
return kj::none;
}

kj::Maybe<kj::String> canonicalizeSearch(
Expand Down Expand Up @@ -2151,8 +2153,7 @@ UrlPattern::Result<UrlPattern::Init> UrlPattern::processInit(
auto str = kj::str(protocol, "://fake-url");
return KJ_ASSERT_NONNULL(Url::tryParse(str.asPtr()));
} else {
auto str = kj::str("fake://fake-url");
return KJ_ASSERT_NONNULL(Url::tryParse(str.asPtr()));
return KJ_ASSERT_NONNULL(Url::tryParse("fake://fake-url"_kj));
}
}
})();
Expand Down

0 comments on commit 3e6246a

Please sign in to comment.