From: Stefan Krah Date: Thu, 6 Sep 2012 07:42:29 +0000 (+0200) Subject: _testbuffer.c: In all current use cases of cmp_structure() dest->format and X-Git-Tag: v3.3.1rc1~818^2^2~138 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=527a2400fb236bb4ab9fa81ad90d932bab6da071;p=python _testbuffer.c: In all current use cases of cmp_structure() dest->format and src->format are either both NULL or both non-NULL. However, it is safer to generalize the function. Found by Coverity. --- diff --git a/Modules/_testbuffer.c b/Modules/_testbuffer.c index 87ada0a092..316666e68e 100644 --- a/Modules/_testbuffer.c +++ b/Modules/_testbuffer.c @@ -16,6 +16,7 @@ PyObject *calcsize = NULL; static const char *simple_fmt = "B"; PyObject *simple_format = NULL; #define SIMPLE_FORMAT(fmt) (fmt == NULL || strcmp(fmt, "B") == 0) +#define FIX_FORMAT(fmt) (fmt == NULL ? "B" : fmt) /**************************************************************************/ @@ -513,10 +514,8 @@ static int cmp_structure(Py_buffer *dest, Py_buffer *src) { Py_ssize_t i; - int same_fmt = ((dest->format == NULL && src->format == NULL) || \ - (strcmp(dest->format, src->format) == 0)); - if (!same_fmt || + if (strcmp(FIX_FORMAT(dest->format), FIX_FORMAT(src->format)) != 0 || dest->itemsize != src->itemsize || dest->ndim != src->ndim) return -1;