diff options
-rw-r--r-- | Modules/_csv.c | 2 | ||||
-rw-r--r-- | Modules/_elementtree.c | 4 | ||||
-rw-r--r-- | Modules/_ssl.c | 6 | ||||
-rw-r--r-- | Objects/longobject.c | 8 |
4 files changed, 12 insertions, 8 deletions
diff --git a/Modules/_csv.c b/Modules/_csv.c index 67d5d9f..5e03635 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -1104,6 +1104,8 @@ join_append_lineterminator(WriterObj *self) char *terminator; terminator_len = PyString_Size(self->dialect->lineterminator); + if (terminator_len == -1) + return 0; /* grow record buffer if necessary */ if (!join_check_rec_size(self, self->rec_len + terminator_len)) diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 06ae24c..3dd5c26 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -327,8 +327,10 @@ element_new(PyObject* tag, PyObject* attrib) if (attrib != Py_None) { - if (element_new_extra(self, attrib) < 0) + if (element_new_extra(self, attrib) < 0) { + PyObject_Del(self); return NULL; + } self->extra->length = 0; self->extra->allocated = STATIC_CHILDREN; diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 4c0da6f..afe699b 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -183,9 +183,9 @@ newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file) int sockstate; self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */ - if (self == NULL){ - errstr = "newPySSLObject error"; - goto fail; + if (self == NULL) { + PyErr_SetString(PySSLErrorObject, "newPySSLObject error"); + return NULL; } memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN); memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN); diff --git a/Objects/longobject.c b/Objects/longobject.c index 5ac570d..e04699e 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -66,8 +66,7 @@ long_normalize(register PyLongObject *v) PyLongObject * _PyLong_New(Py_ssize_t size) { - if (size > INT_MAX) { - /* XXX: Fix this check when ob_size becomes ssize_t */ + if (size > PY_SSIZE_T_MAX) { PyErr_NoMemory(); 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 */ 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]; twodigits q; stwodigits carry = 0; |