summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2024-03-08 10:49:52 (GMT)
committerGitHub <noreply@github.com>2024-03-08 10:49:52 (GMT)
commitfdb2d90a274158aee23b526d972172bf41bd4b7e (patch)
tree50693d16fd4d8ecf83325cae58ce0652cfe7211d
parent0003285c8d78f0b463f2acc164655456fcfc3206 (diff)
downloadcpython-fdb2d90a274158aee23b526d972172bf41bd4b7e.zip
cpython-fdb2d90a274158aee23b526d972172bf41bd4b7e.tar.gz
cpython-fdb2d90a274158aee23b526d972172bf41bd4b7e.tar.bz2
gh-116447: Fix possible UB in `arraymodule` and `getargs` (#116459)
-rw-r--r--Modules/arraymodule.c2
-rw-r--r--Python/getargs.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index df09d9d..317f497 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -247,7 +247,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 08e97ee..bec9816 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -612,7 +612,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;
@@ -633,7 +633,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;