Message 387874 - Python tracker

Message387874

Author eryksun
Recipients alfps, amaury.forgeotdarc, brian.curtin, dstanek, eryksun, exarkun, ezio.melotti, ggenellina, loewis, nvetoshkin, paul.moore, schmir, serhiy.storchaka, steve.dower, terry.reedy, tim.golden, vstinner, zach.ware
Date 2021-03-01.15:27:30
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1614612451.04.0.954090822562.issue8036@roundup.psfhosted.org>
In-reply-to
Content
The internal spawn function in ucrt, common_spawnv(), verifies its parameters as follows:

    _VALIDATE_RETURN(file_name       != nullptr, EINVAL, -1);
    _VALIDATE_RETURN(file_name[0]    != '\0',    EINVAL, -1);
    _VALIDATE_RETURN(arguments       != nullptr, EINVAL, -1);
    _VALIDATE_RETURN(arguments[0]    != nullptr, EINVAL, -1);
    _VALIDATE_RETURN(arguments[0][0] != '\0',    EINVAL, -1);

Currently os.spawnv() and os.spawnve() check for and raise ValueError for all of these cases except the second one, in which file_name is an empty string. Microsoft doesn't document this case [1]:

    These functions validate their parameters. If either cmdname or argv 
    is a null pointer, or if argv points to null pointer, or argv[0] is 
    an empty string, the invalid parameter handler is invoked, as 
    described in Parameter Validation.

In a release build, this case fails with EINVAL. In a debug build, the default error-reporting settings display a pop message about the invalid argument. The message box is easy enough to suppress. But for the sake of consistency with the other cases, os_spawnv_impl in Modules/posixmodule.c should raise a ValueError if `path` is an empty string. For example:

    #ifdef HAVE_WSPAWNV
        if (!path->wide[0]) {
            PyErr_SetString(PyExc_ValueError,
                "spawnv() arg 1 cannot be an empty string");
            return NULL;
        }
    #endif

---
[1] https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/spawnv-wspawnv
History
Date User Action Args
2021-03-01 15:27:31eryksunsetrecipients: + eryksun, loewis, terry.reedy, paul.moore, exarkun, amaury.forgeotdarc, ggenellina, vstinner, dstanek, schmir, tim.golden, ezio.melotti, brian.curtin, alfps, nvetoshkin, zach.ware, serhiy.storchaka, steve.dower
2021-03-01 15:27:31eryksunsetmessageid: <1614612451.04.0.954090822562.issue8036@roundup.psfhosted.org>
2021-03-01 15:27:31eryksunlinkissue8036 messages
2021-03-01 15:27:30eryksuncreate