From d5e0ce3c7e23e1931fc6e17c4d95b9105f97bddf Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 03:40:22 -0300 Subject: An event write-back past the text says range past end of body A well-formed record whose range ran past the body (or tag) was refused as "bad event syntax", which sent a client looking for a typo. It now says "range past end of body" (or tag); a malformed one keeps the old words. Co-Authored-By: Claude Opus 5.5 --- src/ninep/events.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/ninep') diff --git a/src/ninep/events.zig b/src/ninep/events.zig index e0e66800..a12cf86d 100644 --- a/src/ninep/events.zig +++ b/src/ninep/events.zig @@ -579,7 +579,9 @@ pub fn writeEvent(p: *Pardes, req: Req, id: usize) Reply { else => return tree.failText(req.tag, E.INVAL, tree.e_bad_event), } const n = if (r.action.onTag()) tag.len else body.len; - if (r.q0 > r.q1 or r.q1 > n) return tree.failText(req.tag, E.INVAL, tree.e_bad_event); + if (r.q0 > r.q1) return tree.failText(req.tag, E.INVAL, tree.e_bad_event); + // Well formed, but not a range of this text: say which. + if (r.q1 > n) return tree.failText(req.tag, E.INVAL, if (r.action.onTag()) "range past end of tag" else "range past end of body"); } if (check.i != req.data.len) return tree.failText(req.tag, E.INVAL, tree.e_bad_event); } @@ -816,6 +818,8 @@ test "writing an event record back performs the action it names" { try testing.expectEqual(E.INVAL, wr(p, event, bad).errno()); try testing.expectEqual(@as(usize, 0), pane.msg_len); } + // Well formed but past the text: said so, not "bad event syntax". + try testing.expectEqualStrings("range past end of body", wr(p, event, "MX0 999\n").reply.ename); _ = call(p, .{ .tag = 23, .op = .open, .node = event }); p.fs.origin = 'K'; -- cgit v1.3