From c4ab9a4f1d923bb60a341856da1d273b17a545e0 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Mon, 27 Jan 2014 01:12:00 +0100 Subject: [PATCH] Issue #20394: Attempt to silence CID 1164423: Division or modulo by zero in audioop_ratecv_impl() Serhiy and I had the same idea so it's most likely right. ;) --- Modules/audioop.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/audioop.c b/Modules/audioop.c index cc3a020bde1..159b2fbdc81 100644 --- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -1304,6 +1304,7 @@ audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width, int nch "weightA should be >= 1, weightB should be >= 0"); return NULL; } + assert(fragment->len >= 0); if (fragment->len % bytes_per_frame != 0) { PyErr_SetString(AudioopError, "not a whole number of frames"); return NULL; @@ -1370,7 +1371,7 @@ audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width, int nch case ceiling(len/inrate) * outrate. */ /* compute ceiling(len/inrate) without overflow */ - Py_ssize_t q = len > 0 ? 1 + (len - 1) / inrate : 0; + Py_ssize_t q = 1 + (len - 1) / inrate; if (outrate > PY_SSIZE_T_MAX / q / bytes_per_frame) str = NULL; else