[issue20428] _Py_open does not work with O_CREAT
STINNER Victor added the comment: In file included from ./Modules/_localemodule.c:404:0, I don't see where _Py_open() is used in _localemodule.c. I didn't find a call to _Py_open() using O_CREAT. In fact, O_CREAT is not used in the C code of Python. (Except dbmopen in the dbm module, but it doesn't call open(), it calls dbm_open()). I already search the default mode but I didn't see it in the manual page. The glibc pass 0 for the mode by default, but for O_CREAT it reads it from the third mode parameter. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20428 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20428] _Py_open does not work with O_CREAT
New submission from Alexandre Vassalotti: The _Py_open function in Python/fileutils.c cannot be given correctly the flag O_CREAT. According to the POSIX spec, open(2) _must_ be given an additional mode argument when O_CREAT is used. _Py_open should be fixed to either to use a reasonable default value for the mode argument (e.g., O666) or to refuse the O_CREAT flag. -- components: Interpreter Core messages: 209600 nosy: alexandre.vassalotti, haypo priority: normal severity: normal stage: needs patch status: open title: _Py_open does not work with O_CREAT type: behavior versions: Python 3.4 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20428 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20428] _Py_open does not work with O_CREAT
STINNER Victor added the comment: I already search the default mode but I didn't see it in the manual page. Is it 0666? The _Py_open function in Python/fileutils.c cannot be given correctly the flag O_CREAT. What is the current behaviour? A new _Py_open_mode() function can be added. Where do you need O_CREAT? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20428 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue20428] _Py_open does not work with O_CREAT
Alexandre Vassalotti added the comment: What is the current behaviour? I don't think the behaviour is defined. At least, I know it causes recent GCC/glibc combination to throw a compilation error when _FORTIFY_SOURCE is defined: http://www.eglibc.org/cgi-bin/viewvc.cgi/trunk/libc/io/open_2.c?view=markup For example, this is the error I got when I tried to compile Python with LTO: gcc-4.6 -pthread -flto -fuse-linker-plugin -Xlinker -export-dynamic -o python Modules/python.o libpython3.4m.a -lpthread -ldl -lutil -lm bytesobject.o (symbol from plugin): warning: memset used with constant zero length parameter; this could be due to transposed parameters In file included from ./Modules/_localemodule.c:404:0, from :459: /usr/include/x86_64-linux-gnu/bits/fcntl2.h: In function ‘_Py_open’: /usr/include/x86_64-linux-gnu/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments lto-wrapper: gcc-4.6 returned 1 exit status /usr/bin/ld: lto-wrapper failed collect2: ld returned 1 exit status -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue20428 ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com