summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-12-17 13:12:46 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-12-17 13:12:46 (GMT)
commit85c24979507c4986573cf3537d048324f71d7854 (patch)
tree2e463906b4b4f1c92b52ab91e0ba4d29cc851bcb
parent11ee080ea77c037c5a0bd8de972b040930a9b7e6 (diff)
parent48d761e2b4b8cef40349aa286f6f46fc6c6d0fa7 (diff)
downloadcpython-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.c9
-rw-r--r--Python/sysmodule.c4
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;
}