https://github.com/python/cpython/commit/2647afeab694517933c53028d4ad427460b9e1fa
commit: 2647afeab694517933c53028d4ad427460b9e1fa
branch: 3.12
author: Miss Islington (bot) <[email protected]>
committer: sobolevn <[email protected]>
date: 2024-03-08T11:22:07Z
summary:

[3.12] gh-116447: Fix possible UB in `arraymodule` and `getargs` (GH-116459) 
(#116496)

gh-116447: Fix possible UB in `arraymodule` and `getargs` (GH-116459)
(cherry picked from commit fdb2d90a274158aee23b526d972172bf41bd4b7e)

Co-authored-by: Nikita Sobolev <[email protected]>

files:
M Modules/arraymodule.c
M Python/getargs.c

diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 6680820d8e61bc..19ee83d24c8119 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -244,7 +244,7 @@ BB_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
     if (!PyArg_Parse(v, "b;array item must be integer", &x))
         return -1;
     if (i >= 0)
-        ((char *)ap->ob_item)[i] = x;
+        ((unsigned char *)ap->ob_item)[i] = x;
     return 0;
 }
 
diff --git a/Python/getargs.c b/Python/getargs.c
index 066739f21fc467..5e731cdc23cb5f 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -672,7 +672,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list 
*p_va, int flags,
     switch (c) {
 
     case 'b': { /* unsigned byte -- very short int */
-        char *p = va_arg(*p_va, char *);
+        unsigned char *p = va_arg(*p_va, unsigned char *);
         long ival = PyLong_AsLong(arg);
         if (ival == -1 && PyErr_Occurred())
             RETURN_ERR_OCCURRED;
@@ -693,7 +693,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list 
*p_va, int flags,
 
     case 'B': {/* byte sized bitfield - both signed and unsigned
                   values allowed */
-        char *p = va_arg(*p_va, char *);
+        unsigned char *p = va_arg(*p_va, unsigned char *);
         unsigned long ival = PyLong_AsUnsignedLongMask(arg);
         if (ival == (unsigned long)-1 && PyErr_Occurred())
             RETURN_ERR_OCCURRED;

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to