From 117e6a18523c9bce685cd10fa95bf29bbcbe3c06 Mon Sep 17 00:00:00 2001 From: george Date: Sun, 4 Jan 2026 23:58:19 -0800 Subject: [PATCH] fix: handle crypto/rand.Read error in ID generation (gt-qysj9) Panic if crypto/rand.Read fails rather than silently returning zero IDs which could cause message collisions. --- internal/mail/types.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/mail/types.go b/internal/mail/types.go index 8d715f3a..58415f5a 100644 --- a/internal/mail/types.go +++ b/internal/mail/types.go @@ -144,14 +144,18 @@ func NewReplyMessage(from, to, subject, body string, original *Message) *Message // generateID creates a random message ID. func generateID() string { b := make([]byte, 8) - _, _ = rand.Read(b) // crypto/rand.Read only fails on broken system + if _, err := rand.Read(b); err != nil { + panic("crypto/rand.Read failed: " + err.Error()) + } return "msg-" + hex.EncodeToString(b) } // generateThreadID creates a random thread ID. func generateThreadID() string { b := make([]byte, 6) - _, _ = rand.Read(b) // crypto/rand.Read only fails on broken system + if _, err := rand.Read(b); err != nil { + panic("crypto/rand.Read failed: " + err.Error()) + } return "thread-" + hex.EncodeToString(b) }