From d2317110c071d7aff79cc54c0d1ce9907149e4c8 Mon Sep 17 00:00:00 2001 From: Daniel Kareh Date: Thu, 27 Aug 2026 01:14:44 -0400 Subject: [PATCH] Maker.Fetch: don't pass a partially uninitialized slice to `session.fetch` This bug was present since `zig fetch` gained support for SHA-256 Git repositories. It looks like many Git servers tolerate overlong OIDs, but not Google's server (used at https://*.googlesource.com/). Closes #36656. --- lib/compiler/Maker/Fetch.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/compiler/Maker/Fetch.zig b/lib/compiler/Maker/Fetch.zig index 13a6cd08c00b72fbf9493ff5acea1631d2542d6a..f18071ad6ef100b58cc4952b4b603e3105898868 100644 --- a/lib/compiler/Maker/Fetch.zig +++ b/lib/compiler/Maker/Fetch.zig @@ -1306,15 +1306,15 @@ fn initResource(f: *Fetch, uri: std.Uri, resource: *Resource, reader_buffer: []u return error.FetchFailed; } - var want_oid_buf: [git.Oid.max_formatted_length]u8 = undefined; - _ = std.fmt.bufPrint(&want_oid_buf, "{f}", .{want_oid}) catch unreachable; + var want_oid_hex_buf: [git.Oid.max_formatted_length]u8 = undefined; + const want_oid_hex = std.mem.print(&want_oid_hex_buf, "{f}", .{want_oid}) catch unreachable; resource.* = .{ .git = .{ .session = session, .fetch_stream = undefined, .want_oid = want_oid, } }; const fetch_stream = &resource.git.fetch_stream; - session.fetch(fetch_stream, &.{&want_oid_buf}, reader_buffer) catch |err| { + session.fetch(fetch_stream, &.{want_oid_hex}, reader_buffer) catch |err| { return f.fail(f.location_tok, try eb.printString("unable to create fetch stream: {t}", .{err})); }; errdefer fetch_stream.deinit(fetch_stream); -- 2.54.0