zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 6c9d34bce703b80562d86d08b71a92910fce1e46 (tree)
parent 22a6a5d93f000afd7e00450bb5a359f39bb598bf
Author: Nameless <truemedian@gmail.com>
Date:   Wed, 25 Oct 2023 01:30:24 -0500

std.Uri: prevent crash with strange authority section


Diffstat:
Mlib/std/Uri.zig | 4++++
1 file changed, 4 insertions(+), 0 deletions(-)

diff --git a/lib/std/Uri.zig b/lib/std/Uri.zig @@ -171,6 +171,9 @@ pub fn parseWithoutScheme(text: []const u8) ParseError!Uri { } } + // only possible if uri consists of only `userinfo@` + if (start_of_host >= authority.len) break :a; + var end_of_host: usize = authority.len; if (authority[start_of_host] == '[') { // IPv6 @@ -565,6 +568,7 @@ test "authority" { try std.testing.expectEqualSlices(u8, "hostname", (try parse("scheme://userinfo@hostname")).host.?); try std.testing.expectEqualSlices(u8, "userinfo", (try parse("scheme://userinfo@hostname")).user.?); try std.testing.expectEqual(@as(?[]const u8, null), (try parse("scheme://userinfo@hostname")).password); + try std.testing.expectEqual(@as(?[]const u8, null), (try parse("scheme://userinfo@")).host); try std.testing.expectEqualSlices(u8, "hostname", (try parse("scheme://user:password@hostname")).host.?); try std.testing.expectEqualSlices(u8, "user", (try parse("scheme://user:password@hostname")).user.?);