From d68379ff68ed8169315fc5889cdcd7bf9b74ed2c Mon Sep 17 00:00:00 2001 From: marcusDenslow Date: Sat, 23 May 2026 21:36:24 +0200 Subject: [PATCH] fix(cards): handle crypto/rand.Read error in storeRedirect --- api/handlers/cards.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/api/handlers/cards.go b/api/handlers/cards.go index db18d84..8f05b08 100644 --- a/api/handlers/cards.go +++ b/api/handlers/cards.go @@ -30,14 +30,16 @@ var ( payRedirectsMu sync.Mutex ) -func storeRedirect(stripeURL string) string { +func storeRedirect(stripeURL string) (string, error) { b := make([]byte, 16) - rand.Read(b) + if _, err := rand.Read(b); err != nil { + return "", err + } token := hex.EncodeToString(b) payRedirectsMu.Lock() payRedirects[token] = stripeURL payRedirectsMu.Unlock() - return token + return token, nil } // PayRedirect resolves a short token and redirects to the Stripe checkout URL. @@ -166,7 +168,11 @@ func (h *CardHandler) CollectCard(w http.ResponseWriter, r *http.Request) { return } - token := storeRedirect(sess.URL) + token, err := storeRedirect(sess.URL) + if err != nil { + utils.RespondError(w, http.StatusInternalServerError, "INTERNAL_ERROR", "failed to generate redirect token", nil) + return + } utils.RespondSuccess(w, http.StatusOK, map[string]interface{}{ "url": fmt.Sprintf("%s/pay/%s", h.appURL, token), })