[Python-checkins] r43586 - python/trunk/Modules/posixmodule.c

Neal Norwitz nnorwitz at gmail.com
Tue Apr 4 06:57:44 CEST 2006


Unless I'm reading this patch wrong, it looks like it will crash if
only a single parameter is passed in.  With a single argument,
operation is NULL and strlen(NULL) go boom.

I think this patch should be reverted, unless a test case is added and
the coded corrected.

n
--

On 4/3/06, georg.brandl <python-checkins at python.org> wrote:
> Author: georg.brandl
> Date: Mon Apr  3 14:26:26 2006
> New Revision: 43586
>
> Modified:
>    python/trunk/Modules/posixmodule.c
> Log:
> Bug #1451503: allow unicode filenames in os.startfile().
>
>
>
> Modified: python/trunk/Modules/posixmodule.c
> ==============================================================================
> --- python/trunk/Modules/posixmodule.c  (original)
> +++ python/trunk/Modules/posixmodule.c  Mon Apr  3 14:26:26 2006
> @@ -7467,6 +7467,41 @@
>         char *filepath;
>         char *operation = NULL;
>         HINSTANCE rc;
> +#ifdef Py_WIN_WIDE_FILENAMES
> +       if (unicode_file_names()) {
> +               PyObject *unipath, *woperation;
> +               if (!PyArg_ParseTuple(args, "U|s:startfile",
> +                                     &unipath, &operation)) {
> +                       PyErr_Clear();
> +                       goto normal;
> +               }
> +
> +               woperation = PyUnicode_DecodeASCII(operation,
> +                                                  strlen(operation), NULL);
> +               if (!woperation) {
> +                       PyErr_Clear();
> +                       goto normal;
> +               }
> +
> +               Py_BEGIN_ALLOW_THREADS
> +               rc = ShellExecuteW((HWND)0, operation,
> +                       PyUnicode_AS_UNICODE(unipath),
> +                       PyUnicode_AS_UNICODE(woperation),
> +                       NULL, NULL, SW_SHOWNORMAL);
> +               Py_END_ALLOW_THREADS
> +
> +               Py_DECREF(woperation);
> +               if (rc <= (HINSTANCE)32) {
> +                       PyObject *errval = win32_error_unicode("startfile",
> +                                               PyUnicode_AS_UNICODE(unipath));
> +                       return errval;
> +               }
> +               Py_INCREF(Py_None);
> +               return Py_None;
> +       }
> +#endif
> +
> +normal:
>         if (!PyArg_ParseTuple(args, "et|s:startfile",
>                               Py_FileSystemDefaultEncoding, &filepath,
>                               &operation))
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>


More information about the Python-checkins mailing list