mirror of https://github.com/python/cpython
Fix problems found by Coverity.
longobject.c: also fix an ssize_t problem <a> could have been NULL, so hoist the size calc to not use <a>. _ssl.c: under fail: self is DECREF'd, but it would have been NULL. _elementtree.c: delete self if there was an error. _csv.c: I'm not sure if lineterminator could have been anything other than a string. However, other string method calls are checked, so check this one too.
This commit is contained in:
parent
ad2ef33245
commit
c6a989ac3a
|
@ -1104,6 +1104,8 @@ join_append_lineterminator(WriterObj *self)
|
||||||
char *terminator;
|
char *terminator;
|
||||||
|
|
||||||
terminator_len = PyString_Size(self->dialect->lineterminator);
|
terminator_len = PyString_Size(self->dialect->lineterminator);
|
||||||
|
if (terminator_len == -1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* grow record buffer if necessary */
|
/* grow record buffer if necessary */
|
||||||
if (!join_check_rec_size(self, self->rec_len + terminator_len))
|
if (!join_check_rec_size(self, self->rec_len + terminator_len))
|
||||||
|
|
|
@ -327,8 +327,10 @@ element_new(PyObject* tag, PyObject* attrib)
|
||||||
|
|
||||||
if (attrib != Py_None) {
|
if (attrib != Py_None) {
|
||||||
|
|
||||||
if (element_new_extra(self, attrib) < 0)
|
if (element_new_extra(self, attrib) < 0) {
|
||||||
|
PyObject_Del(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
self->extra->length = 0;
|
self->extra->length = 0;
|
||||||
self->extra->allocated = STATIC_CHILDREN;
|
self->extra->allocated = STATIC_CHILDREN;
|
||||||
|
|
|
@ -183,9 +183,9 @@ newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file)
|
||||||
int sockstate;
|
int sockstate;
|
||||||
|
|
||||||
self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */
|
self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */
|
||||||
if (self == NULL){
|
if (self == NULL) {
|
||||||
errstr = "newPySSLObject error";
|
PyErr_SetString(PySSLErrorObject, "newPySSLObject error");
|
||||||
goto fail;
|
return NULL;
|
||||||
}
|
}
|
||||||
memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN);
|
memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN);
|
||||||
memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN);
|
memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN);
|
||||||
|
|
|
@ -66,8 +66,7 @@ long_normalize(register PyLongObject *v)
|
||||||
PyLongObject *
|
PyLongObject *
|
||||||
_PyLong_New(Py_ssize_t size)
|
_PyLong_New(Py_ssize_t size)
|
||||||
{
|
{
|
||||||
if (size > INT_MAX) {
|
if (size > PY_SSIZE_T_MAX) {
|
||||||
/* XXX: Fix this check when ob_size becomes ssize_t */
|
|
||||||
PyErr_NoMemory();
|
PyErr_NoMemory();
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1580,9 +1579,10 @@ x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
|
||||||
assert(size_w == ABS(w->ob_size)); /* That's how d was calculated */
|
assert(size_w == ABS(w->ob_size)); /* That's how d was calculated */
|
||||||
|
|
||||||
size_v = ABS(v->ob_size);
|
size_v = ABS(v->ob_size);
|
||||||
a = _PyLong_New(size_v - size_w + 1);
|
k = size_v - size_w;
|
||||||
|
a = _PyLong_New(k + 1);
|
||||||
|
|
||||||
for (j = size_v, k = a->ob_size-1; a != NULL && k >= 0; --j, --k) {
|
for (j = size_v; a != NULL && k >= 0; --j, --k) {
|
||||||
digit vj = (j >= size_v) ? 0 : v->ob_digit[j];
|
digit vj = (j >= size_v) ? 0 : v->ob_digit[j];
|
||||||
twodigits q;
|
twodigits q;
|
||||||
stwodigits carry = 0;
|
stwodigits carry = 0;
|
||||||
|
|
Loading…
Reference in New Issue