[Python-checkins] r42878 - in python/trunk: Lib/test/test_hotshot.py Modules/_hotshot.c Modules/_lsprof.c Modules/_sre.c Modules/audioop.c Modules/regexmodule.c

neal.norwitz python-checkins at python.org
Tue Mar 7 05:48:25 CET 2006


Author: neal.norwitz
Date: Tue Mar 7 05:48:24 2006
New Revision: 42878
Modified:
 python/trunk/Lib/test/test_hotshot.py
 python/trunk/Modules/_hotshot.c
 python/trunk/Modules/_lsprof.c
 python/trunk/Modules/_sre.c
 python/trunk/Modules/audioop.c
 python/trunk/Modules/regexmodule.c
Log:
Thanks to Coverity, these were all reported by their Prevent tool.
All of these (except _lsprof.c) should be backported. Particularly
the hotshot change which validates sys.path. Can someone backport?
Modified: python/trunk/Lib/test/test_hotshot.py
==============================================================================
--- python/trunk/Lib/test/test_hotshot.py	(original)
+++ python/trunk/Lib/test/test_hotshot.py	Tue Mar 7 05:48:24 2006
@@ -107,6 +107,19 @@
 profiler.close()
 os.unlink(self.logfn)
 
+ def test_bad_sys_path(self):
+ import sys
+ orig_path = sys.path
+ coverage = hotshot._hotshot.coverage
+ try:
+ # verify we require a list for sys.path
+ sys.path = 'abc'
+ self.assertRaises(RuntimeError, coverage, test_support.TESTFN)
+ # verify sys.path exists
+ del sys.path
+ self.assertRaises(RuntimeError, coverage, test_support.TESTFN)
+ finally:
+ sys.path = orig_path
 
 def test_main():
 test_support.run_unittest(HotShotTestCase)
Modified: python/trunk/Modules/_hotshot.c
==============================================================================
--- python/trunk/Modules/_hotshot.c	(original)
+++ python/trunk/Modules/_hotshot.c	Tue Mar 7 05:48:24 2006
@@ -473,6 +473,8 @@
 }
 else if (!err) {
 result = PyTuple_New(4);
+ if (result == NULL)
+ return NULL;
 PyTuple_SET_ITEM(result, 0, PyInt_FromLong(what));
 PyTuple_SET_ITEM(result, 2, PyInt_FromLong(fileno));
 if (s1 == NULL)
@@ -1455,6 +1457,10 @@
 getcwd(cwdbuffer, sizeof cwdbuffer));
 
 temp = PySys_GetObject("path");
+ if (temp == NULL || !PyList_Check(temp)) {
+	PyErr_SetString(PyExc_RuntimeError, "sys.path must be a list");
+ 	return -1;
+ }
 len = PyList_GET_SIZE(temp);
 for (i = 0; i < len; ++i) {
 PyObject *item = PyList_GET_ITEM(temp, i);
Modified: python/trunk/Modules/_lsprof.c
==============================================================================
--- python/trunk/Modules/_lsprof.c	(original)
+++ python/trunk/Modules/_lsprof.c	Tue Mar 7 05:48:24 2006
@@ -850,6 +850,8 @@
 {
 	PyObject *module, *d;
 	module = Py_InitModule3("_lsprof", moduleMethods, "Fast profiler");
+	if (module == NULL)
+		return;
 	d = PyModule_GetDict(module);
 	if (PyType_Ready(&PyProfiler_Type) < 0)
 		return;
Modified: python/trunk/Modules/_sre.c
==============================================================================
--- python/trunk/Modules/_sre.c	(original)
+++ python/trunk/Modules/_sre.c	Tue Mar 7 05:48:24 2006
@@ -2983,7 +2983,7 @@
 return result;
 
 failed:
- Py_DECREF(keys);
+ Py_XDECREF(keys);
 Py_DECREF(result);
 return NULL;
 }
Modified: python/trunk/Modules/audioop.c
==============================================================================
--- python/trunk/Modules/audioop.c	(original)
+++ python/trunk/Modules/audioop.c	Tue Mar 7 05:48:24 2006
@@ -1013,6 +1013,8 @@
 		while (d < 0) {
 			if (len == 0) {
 				samps = PyTuple_New(nchannels);
+				if (samps == NULL)
+					goto exit;
 				for (chan = 0; chan < nchannels; chan++)
 					PyTuple_SetItem(samps, chan,
 						Py_BuildValue("(ii)",
Modified: python/trunk/Modules/regexmodule.c
==============================================================================
--- python/trunk/Modules/regexmodule.c	(original)
+++ python/trunk/Modules/regexmodule.c	Tue Mar 7 05:48:24 2006
@@ -535,7 +535,7 @@
 
 	gdict = PyDict_New();
 	if (gdict == NULL || (npattern = symcomp(pattern, gdict)) == NULL) {
-		Py_DECREF(gdict);
+		Py_XDECREF(gdict);
 		Py_DECREF(pattern);
 		return NULL;
 	}


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /