[issue2443] uninitialized access to va_list
Rolland Dudemaine
report at bugs.python.org
Tue Mar 25 22:40:20 CET 2008
Rolland Dudemaine <rolland at ghs.com> added the comment:
This is what I meant. The initialization should be done by calling
va_start(count_va); as you described.
In the files and lines I reported though, this is not called.
I'll file a patch for it soon.
--Rolland Dudemaine
Alexander Belopolsky wrote:
> Alexander Belopolsky <belopolsky at users.sourceforge.net> added the comment:
>
> This is not a bug. All the reported functions expect va_list argument
> to be initialized before being called. AFAICT, they are consistently
> used in this way. For example,
>
> PyObject *
> PyObject_CallFunctionObjArgs(PyObject *callable, ...)
> {
> PyObject *args, *tmp;
> va_list vargs;
>
> if (callable == NULL)
> return null_error();
>
> /* count the args */
> va_start(vargs, callable);
> args = objargs_mktuple(vargs);
> va_end(vargs);
> if (args == NULL)
> return NULL;
> tmp = PyObject_Call(callable, args, NULL);
> Py_DECREF(args);
>
> return tmp;
> }
>
> This may need to be clarified in the docs. For example, PyString_FromFormatV does not mention that vargs needs to be
> initialized: <http://docs.python.org/dev/c-
> api/string.html#PyString_FromFormatV>. On the other hand, this may be
> obvious to most C programmers.
>
> I suggest to close this issue as invalid.
>
> ----------
> nosy: +belopolsky
>
> __________________________________
> Tracker <report at bugs.python.org>
> <http://bugs.python.org/issue2443>
> __________________________________
>
----------
title: Define Py_VA_COPY macro as a cross-platform replacement for gcc __va_copy -> uninitialized access to va_list
__________________________________
Tracker <report at bugs.python.org>
<http://bugs.python.org/issue2443>
__________________________________
More information about the Python-bugs-list
mailing list