summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArmin Rigo <arigo@tunes.org>2004-09-27 19:54:33 (GMT)
committerArmin Rigo <arigo@tunes.org>2004-09-27 19:54:33 (GMT)
commitb6aa856f258d118b0605a60874f33c398dee780f (patch)
tree98c3f43670ed4158fe4323849c036aa860ad3e39
parent9f904398179bcbab4bf21b2500aa14aec01fbdb3 (diff)
downloadcpython-b6aa856f258d118b0605a60874f33c398dee780f.zip
cpython-b6aa856f258d118b0605a60874f33c398dee780f.tar.gz
cpython-b6aa856f258d118b0605a60874f33c398dee780f.tar.bz2
Patch #1009075, bug #952953: allow execve with empty 2nd argument
-rw-r--r--Doc/lib/libos.tex4
-rw-r--r--Modules/posixmodule.c12
2 files changed, 2 insertions, 14 deletions
diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 88e6402..510da17 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -1226,8 +1226,8 @@ the individual parameters simply become additional parameters to the
\function{execl*()} functions. The \character{v} variants are good
when the number of parameters is variable, with the arguments being
passed in a list or tuple as the \var{args} parameter. In either
-case, the arguments to the child process must start with the name of
-the command being run.
+case, the arguments to the child process should start with the name of
+the command being run, but this is not enforced.
The variants which include a \character{p} near the end
(\function{execlp()}, \function{execlpe()}, \function{execvp()},
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 306bce5..764fa4c 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2171,12 +2171,6 @@ posix_execv(PyObject *self, PyObject *args)
return NULL;
}
- if (argc == 0) {
- PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty");
- PyMem_Free(path);
- return NULL;
- }
-
argvlist = PyMem_NEW(char *, argc+1);
if (argvlist == NULL) {
PyMem_Free(path);
@@ -2253,12 +2247,6 @@ posix_execve(PyObject *self, PyObject *args)
goto fail_0;
}
- if (argc == 0) {
- PyErr_SetString(PyExc_ValueError,
- "execve() arg 2 must not be empty");
- goto fail_0;
- }
-
argvlist = PyMem_NEW(char *, argc+1);
if (argvlist == NULL) {
PyErr_NoMemory();