summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-04-26 20:34:28 (GMT)
committerGuido van Rossum <guido@python.org>2000-04-26 20:34:28 (GMT)
commit50422b403c4ebea87f7af840e5c5cf147155639e (patch)
tree835eded9710ea7fd84c529269ad1cf13beddeeaa /Modules
parent868b50af1710442a8f92b266ff507259bc09e7de (diff)
downloadcpython-50422b403c4ebea87f7af840e5c5cf147155639e.zip
cpython-50422b403c4ebea87f7af840e5c5cf147155639e.tar.gz
cpython-50422b403c4ebea87f7af840e5c5cf147155639e.tar.bz2
Michael Hudson:
This patch changes posixmodule.c:execv to a) check for zero length args (does this to execve, too), raising ValueError. b) raises more rational exceptions for various flavours of duff arguments. I *hate* TypeError: "illegal argument type for built-in operation" It has to be one of the most frustrating error messages ever.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/posixmodule.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index e269106..2c5274a 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1343,8 +1343,12 @@ posix_execv(self, args)
getitem = PyTuple_GetItem;
}
else {
- badarg:
- PyErr_BadArgument();
+ PyErr_SetString(PyExc_TypeError, "argv must be tuple or list");
+ return NULL;
+ }
+
+ if (argc == 0) {
+ PyErr_SetString(PyExc_ValueError, "empty argument list");
return NULL;
}
@@ -1354,7 +1358,10 @@ posix_execv(self, args)
for (i = 0; i < argc; i++) {
if (!PyArg_Parse((*getitem)(argv, i), "s", &argvlist[i])) {
PyMem_DEL(argvlist);
- goto badarg;
+ PyErr_SetString(PyExc_TypeError,
+ "all arguments must be strings");
+ return NULL;
+
}
}
argvlist[argc] = NULL;
@@ -1416,6 +1423,12 @@ posix_execve(self, args)
return NULL;
}
+ if (argc == 0) {
+ PyErr_SetString(PyExc_ValueError,
+ "empty argument list");
+ return NULL;
+ }
+
argvlist = PyMem_NEW(char *, argc+1);
if (argvlist == NULL) {
PyErr_NoMemory();