https://github.com/python/cpython/commit/1b7470f8cbff4bb9e58edd940a997a3647e285e4
commit: 1b7470f8cbff4bb9e58edd940a997a3647e285e4
branch: main
author: Bénédikt Tran <10796600+picn...@users.noreply.github.com>
committer: picnixz <10796600+picn...@users.noreply.github.com>
date: 2025-04-28T01:14:12+02:00
summary:

gh-133061: do not mention `UINT32_MAX` in HMAC user-facing messages (#133062)

files:
M Modules/hmacmodule.c

diff --git a/Modules/hmacmodule.c b/Modules/hmacmodule.c
index 76079a7679426b..c7b49d4dee3d0a 100644
--- a/Modules/hmacmodule.c
+++ b/Modules/hmacmodule.c
@@ -50,8 +50,21 @@
 
 // --- Reusable error messages ------------------------------------------------
 
-#define INVALID_KEY_LENGTH  "key length exceeds UINT32_MAX"
-#define INVALID_MSG_LENGTH  "message length exceeds UINT32_MAX"
+static inline void
+set_invalid_key_length_error(void)
+{
+    (void)PyErr_Format(PyExc_OverflowError,
+                       "key length exceeds %u",
+                       UINT32_MAX);
+}
+
+static inline void
+set_invalid_msg_length_error(void)
+{
+    (void)PyErr_Format(PyExc_OverflowError,
+                       "message length exceeds %u",
+                       UINT32_MAX);
+}
 
 // --- HMAC underlying hash function static information -----------------------
 
@@ -760,7 +773,7 @@ hmac_new_initial_state(HMACObject *self, uint8_t *key, 
Py_ssize_t len)
     // not rely on HACL* implementation anymore. As such, we explicitly
     // reject keys that do not fit on 32 bits until HACL* handles them.
     if (len > UINT32_MAX_AS_SSIZE_T) {
-        PyErr_SetString(PyExc_OverflowError, INVALID_KEY_LENGTH);
+        set_invalid_key_length_error();
         return -1;
     }
 #endif
@@ -1249,36 +1262,36 @@ _hmac_compute_digest_impl(PyObject *module, PyObject 
*key, PyObject *msg,
  * lest an OverflowError is raised. The Python implementation takes care
  * of dispatching to the OpenSSL implementation in this case.
  */
-#define Py_HMAC_HACL_ONESHOT(HACL_HID, KEY, MSG)                        \
-    do {                                                                \
-        Py_buffer keyview, msgview;                                     \
-        GET_BUFFER_VIEW_OR_ERROUT((KEY), &keyview);                     \
-        if (!has_uint32_t_buffer_length(&keyview)) {                    \
-            PyBuffer_Release(&keyview);                                 \
-            PyErr_SetString(PyExc_OverflowError, INVALID_KEY_LENGTH);   \
-            return NULL;                                                \
-        }                                                               \
-        GET_BUFFER_VIEW_OR_ERROR((MSG), &msgview,                       \
-                                 PyBuffer_Release(&keyview);            \
-                                 return NULL);                          \
-        if (!has_uint32_t_buffer_length(&msgview)) {                    \
-            PyBuffer_Release(&msgview);                                 \
-            PyBuffer_Release(&keyview);                                 \
-            PyErr_SetString(PyExc_OverflowError, INVALID_MSG_LENGTH);   \
-            return NULL;                                                \
-        }                                                               \
-        uint8_t out[Py_hmac_## HACL_HID ##_digest_size];                \
-        Py_hmac_## HACL_HID ##_compute_func(                            \
-            out,                                                        \
-            (uint8_t *)keyview.buf, (uint32_t)keyview.len,              \
-            (uint8_t *)msgview.buf, (uint32_t)msgview.len               \
-        );                                                              \
-        PyBuffer_Release(&msgview);                                     \
-        PyBuffer_Release(&keyview);                                     \
-        return PyBytes_FromStringAndSize(                               \
-            (const char *)out,                                          \
-            Py_hmac_## HACL_HID ##_digest_size                          \
-        );                                                              \
+#define Py_HMAC_HACL_ONESHOT(HACL_HID, KEY, MSG)                \
+    do {                                                        \
+        Py_buffer keyview, msgview;                             \
+        GET_BUFFER_VIEW_OR_ERROUT((KEY), &keyview);             \
+        if (!has_uint32_t_buffer_length(&keyview)) {            \
+            PyBuffer_Release(&keyview);                         \
+            set_invalid_key_length_error();                     \
+            return NULL;                                        \
+        }                                                       \
+        GET_BUFFER_VIEW_OR_ERROR((MSG), &msgview,               \
+                                 PyBuffer_Release(&keyview);    \
+                                 return NULL);                  \
+        if (!has_uint32_t_buffer_length(&msgview)) {            \
+            PyBuffer_Release(&msgview);                         \
+            PyBuffer_Release(&keyview);                         \
+            set_invalid_msg_length_error();                     \
+            return NULL;                                        \
+        }                                                       \
+        uint8_t out[Py_hmac_## HACL_HID ##_digest_size];        \
+        Py_hmac_## HACL_HID ##_compute_func(                    \
+            out,                                                \
+            (uint8_t *)keyview.buf, (uint32_t)keyview.len,      \
+            (uint8_t *)msgview.buf, (uint32_t)msgview.len       \
+        );                                                      \
+        PyBuffer_Release(&msgview);                             \
+        PyBuffer_Release(&keyview);                             \
+        return PyBytes_FromStringAndSize(                       \
+            (const char *)out,                                  \
+            Py_hmac_## HACL_HID ##_digest_size                  \
+        );                                                      \
     } while (0)
 
 /*[clinic input]

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to