diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-17 13:12:46 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-17 13:12:46 (GMT) |
commit | 85c24979507c4986573cf3537d048324f71d7854 (patch) | |
tree | 2e463906b4b4f1c92b52ab91e0ba4d29cc851bcb | |
parent | 11ee080ea77c037c5a0bd8de972b040930a9b7e6 (diff) | |
parent | 48d761e2b4b8cef40349aa286f6f46fc6c6d0fa7 (diff) | |
download | cpython-85c24979507c4986573cf3537d048324f71d7854.zip cpython-85c24979507c4986573cf3537d048324f71d7854.tar.gz cpython-85c24979507c4986573cf3537d048324f71d7854.tar.bz2 |
Issue #16404: Add checks for return value of PyLong_FromLong() in
sys.getwindowsversion() and ossaudiodev.setparameters().
Reported by Ned Batchelder.
-rw-r--r-- | Modules/ossaudiodev.c | 9 | ||||
-rw-r--r-- | Python/sysmodule.c | 4 |
2 files changed, 5 insertions, 8 deletions
diff --git a/Modules/ossaudiodev.c b/Modules/ossaudiodev.c index b0a16db..be90016 100644 --- a/Modules/ossaudiodev.c +++ b/Modules/ossaudiodev.c @@ -564,7 +564,6 @@ oss_setparameters(oss_audio_t *self, PyObject *args) { int wanted_fmt, wanted_channels, wanted_rate, strict=0; int fmt, channels, rate; - PyObject * rv; /* return tuple (fmt, channels, rate) */ if (!_is_fd_valid(self->fd)) return NULL; @@ -609,13 +608,7 @@ oss_setparameters(oss_audio_t *self, PyObject *args) /* Construct the return value: a (fmt, channels, rate) tuple that tells what the audio hardware was actually set to. */ - rv = PyTuple_New(3); - if (rv == NULL) - return NULL; - PyTuple_SET_ITEM(rv, 0, PyLong_FromLong(fmt)); - PyTuple_SET_ITEM(rv, 1, PyLong_FromLong(channels)); - PyTuple_SET_ITEM(rv, 2, PyLong_FromLong(rate)); - return rv; + return Py_BuildValue("(iii)", fmt, channels, rate); } static int diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 46a6aa9..d238561 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -801,6 +801,10 @@ sys_getwindowsversion(PyObject *self) PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wSuiteMask)); PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wProductType)); + if (PyErr_Occurred()) { + Py_DECREF(version); + return NULL; + } return version; } |