New submission from Itai Bar-Natan:
The following embedded application, which calls Py_Main with a "-W X" argument
where X is not a valid Unicode string, returns a segmentation fault:
```
#include "Python.h"
main() {
wchar_t *invalid_str;
invalid_str = malloc(2*sizeof(wchar_t));
invalid_str[0] = 0x110000;
invalid_str[1] = 0;
wchar_t *argv[4] = {L"embedded-python", L"-W", invalid_str, NULL};
Py_Main(3, argv);
}
```
This segmentation fault is present in Python 3.4, 3.5, and the latest
development branch I downloaded, but is not present in Python 3.2. This program
is obviously invalid and it may be reasonable to emit a fatal error in this
situation, but it should not give a segmentation fault.
I believe the issue is that this codes leads to exception being thrown before
exceptions are initialized, and more specifically, a call to
PyExceptionClass_Check() within PyErr_Object() reads a NULL pointer. I haven't
tested this but I expect that this problem would not appear when calling Python
directly since Python sanitizes the command line arguments from main().
Nonetheless even here the possibility of other exceptions being raised early in
the initialization sequence remains a potential problem.
----------
components: Interpreter Core
messages: 254703
nosy: itaibn
priority: normal
severity: normal
status: open
title: Segmentation fault with invalid Unicode command-line arguments in
embedded Python
type: crash
versions: Python 3.4, Python 3.5, Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue25631>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com