summaryrefslogtreecommitdiff
path: root/internal/generate/classify_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-01 23:13:11 +0300
committerPaul Buetow <paul@buetow.org>2026-06-01 23:13:11 +0300
commitbd544509846fb7e1882aa466d24aea937c2b2804 (patch)
tree5e9a31a7cc6a7256b52ce4e842d9bb72f2baed80 /internal/generate/classify_test.go
parent8251307ac3187b346ed12e9a54d9bf6d7cba7e53 (diff)
fix(classify): mq_timedsend returns status, not bytes — make ret UNCLASSIFIED
mq_timedsend(2)/mq_send(3) return 0 on success or -1 on error; the payload size msg_len is an INPUT argument, never the return value. It was wrongly listed in retClassifications as WriteClassified, which made bytesFromRet attribute its 0 return as "bytes written" (the stats engine WriteClassified path). Remove it so its return stays UNCLASSIFIED, consistent with its POSIX mq sibling mq_timedreceive (which legitimately stays ReadClassified because it returns the received byte count). This is the exact same defect just fixed for SysV msgsnd (5057bd9) and mirrors the msgrcv/msgsnd asymmetry. Regenerated tracepoints/docs accordingly and updated the pre-existing classify unit test and the TestPosixMqBasic integration assertion: the mq_timedsend send no longer asserts a write byte count (now expects 0), while mq_timedreceive keeps its received-byte-count assertion. Verified: mage generate idempotent, mage build OK, internal/generate tests pass. TestPosixMqBasic skips in this sandbox (mq_open: permission denied) but compiles with the corrected assertions. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'internal/generate/classify_test.go')
-rw-r--r--internal/generate/classify_test.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/internal/generate/classify_test.go b/internal/generate/classify_test.go
index bd03af4..4993293 100644
--- a/internal/generate/classify_test.go
+++ b/internal/generate/classify_test.go
@@ -350,7 +350,9 @@ func TestClassifyMqSyscallPairsAcceptedAndClassified(t *testing.T) {
}{
{"mq_open", "struct open_event", "UNCLASSIFIED"},
{"mq_unlink", "struct path_event", "UNCLASSIFIED"},
- {"mq_timedsend", "struct fd_event", "WRITE_CLASSIFIED"},
+ // mq_timedsend returns 0/-1 (a status), not a byte count, so its ret is
+ // UNCLASSIFIED. Only mq_timedreceive returns a real received byte count.
+ {"mq_timedsend", "struct fd_event", "UNCLASSIFIED"},
{"mq_timedreceive", "struct fd_event", "READ_CLASSIFIED"},
{"mq_notify", "struct fd_event", "UNCLASSIFIED"},
{"mq_getsetattr", "struct fd_event", "UNCLASSIFIED"},