s = PyString_AS_STRING(v);
while (*s && isspace(Py_CHARMASK(*s)))
s++;
- if (s[0] == '\0') {
- PyErr_SetString(PyExc_ValueError, "empty string for int()");
- return NULL;
- }
errno = 0;
x = PyOS_strtol(s, &end, 10);
+ if (end == s || !isdigit(end[-1])) {
+ PyErr_SetString(PyExc_ValueError, "no digits in int constant");
+ return NULL;
+ }
while (*end && isspace(Py_CHARMASK(*end)))
end++;
if (*end != '\0') {
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
- else if (end-s != PyString_GET_SIZE(v)) {
+ else if (end != PyString_AS_STRING(v) + PyString_GET_SIZE(v)) {
PyErr_SetString(PyExc_ValueError,
"null byte in argument for int()");
return NULL;
s = PyString_AS_STRING(v);
while (*s && isspace(Py_CHARMASK(*s)))
s++;
- if (s[0] == '\0') {
- PyErr_SetString(PyExc_ValueError, "empty string for long()");
- return NULL;
- }
x = PyLong_FromString(s, &end, 10);
if (x == NULL)
return NULL;
Py_DECREF(x);
return NULL;
}
- else if (end-s != PyString_GET_SIZE(v)) {
+ else if (end != PyString_AS_STRING(v) + PyString_GET_SIZE(v)) {
PyErr_SetString(PyExc_ValueError,
- "null byte in argument for float()");
+ "null byte in argument for long()");
return NULL;
}
return x;
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
- else if (end-s != PyString_GET_SIZE(v)) {
+ else if (end != PyString_AS_STRING(v) + PyString_GET_SIZE(v)) {
PyErr_SetString(PyExc_ValueError,
"null byte in argument for float()");
return NULL;