mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Add check in long-to-int conversion for at least one digit.
This commit is contained in:
parent
3b2b34790f
commit
e67629774f
1 changed files with 7 additions and 0 deletions
|
@ -453,6 +453,7 @@ PyLong_FromString(str, pend, base)
|
|||
int base;
|
||||
{
|
||||
int sign = 1;
|
||||
char *start;
|
||||
PyLongObject *z;
|
||||
|
||||
if ((base != 0 && base < 2) || base > 36) {
|
||||
|
@ -481,6 +482,7 @@ PyLong_FromString(str, pend, base)
|
|||
if (base == 16 && str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
|
||||
str += 2;
|
||||
z = _PyLong_New(0);
|
||||
start = str;
|
||||
for ( ; z != NULL; ++str) {
|
||||
int k = -1;
|
||||
PyLongObject *temp;
|
||||
|
@ -497,6 +499,11 @@ PyLong_FromString(str, pend, base)
|
|||
Py_DECREF(z);
|
||||
z = temp;
|
||||
}
|
||||
if (str == start) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"no digits in long int constant");
|
||||
return NULL;
|
||||
}
|
||||
if (sign < 0 && z != NULL && z->ob_size != 0)
|
||||
z->ob_size = -(z->ob_size);
|
||||
if (pend)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue