Issue #15989: Fix several occurrences of integer overflow
when result of PyLong_AsLong() narrowed to int without checks.
This is a backport of changesets 13e2e44db99d and 525407d89277.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index e1df874..80a70b6 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -9640,7 +9640,7 @@
"* wants int");
goto onError;
}
- width = PyLong_AsLong(v);
+ width = PyLong_AsSsize_t(v);
if (width == -1 && PyErr_Occurred())
goto onError;
if (width < 0) {
@@ -9677,7 +9677,7 @@
"* wants int");
goto onError;
}
- prec = PyLong_AsLong(v);
+ prec = _PyLong_AsInt(v);
if (prec == -1 && PyErr_Occurred())
goto onError;
if (prec < 0)