authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-03-12 20:11:15 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-03-12 20:11:15 -07:00
loge5f2387fe6d71d4c0a965348125e9e612680decd
tree2c4642fe2eb8dbb16ce1abb29aa21637b89e604e
parent1616ae24d16ae69d9c9fc08b29248ee5a042721c
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

fix a crash in parseCommit


3 files changed, 18 insertions(+), 1 deletions(-)

git.zig+6-1
......@@ -245,7 +245,12 @@ fn parseCommitUserAndAt(input: string) !UserAndAt {
245245 var maybe_bad_parser = std.mem.splitBackwardsScalar(u8, input, ' ');
246246 const tz_part = maybe_bad_parser.next() orelse return error.BadCommitTz;
247247 const time_part = maybe_bad_parser.next() orelse return error.BadCommitTime;
248 const email_part = maybe_bad_parser.next() orelse return error.BadCommitEmail;
248 var email_part = maybe_bad_parser.next() orelse return error.BadCommitEmail;
249 while (email_part[0] != '<') {
250 const next_len = maybe_bad_parser.next().?.len;
251 email_part.ptr -= next_len + 1;
252 email_part.len += next_len + 1;
253 }
249254 const name_part = maybe_bad_parser.rest();
250255 std.debug.assert(email_part[0] == '<');
251256 std.debug.assert(email_part[email_part.len - 1] == '>');
test.zig+6
......@@ -238,6 +238,12 @@ test {
238238 const alloc = arena.allocator();
239239 _ = try git.parseTreeDiff(alloc, @embedFile("./testdata/diff-d9165aacce3629d503f87cd2c3f612629127641b")); // zig
240240}
241test {
242 var arena = std.heap.ArenaAllocator.init(std.testing.allocator);
243 defer arena.deinit();
244 const alloc = arena.allocator();
245 _ = try git.parseCommit(alloc, @embedFile("./testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713")); // zig
246}
241247test {
242248 var arena = std.heap.ArenaAllocator.init(std.testing.allocator);
243249 defer arena.deinit();
testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713 created+6
......@@ -0,0 +1,6 @@
1tree 75fb7a2a91977f415947e341c052db72ecb269a8
2parent b5cef9e8b48e81fb1f3b56cb752bac95e6a2d44b
3author Michael Ortmann <keine email> 1710995836 +0100
4committer Veikka Tuominen <git@vexu.eu> 1711033730 +0200
5
6std.os.windows: add POLL.IN and POLL.OUT