This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Created on 2017-08-21 08:33 by Oren Milman, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 3171 merged Oren Milman, 2017-08-21 19:00
PR 3233 merged Oren Milman, 2017-08-29 10:54
PR 3235 merged Oren Milman, 2017-08-29 15:05
Messages (7)
msg300613 - (view) Author: Oren Milman (Oren Milman) * Date: 2017-08-21 08:33
according to the docs (https://docs.python.org/3.7/c-api/arg.html?highlight=pyarg_parsetuple#c.PyArg_ParseTuple), PyArg_ParseTuple returns true for success or false for failure. I also looked at the implementation in Python/getargs.c, and it seems that indeed PyArg_ParseTuple can return only 0 or 1. however, in some places in the codebase, there are checks whether PyArg_ParseTuple returned a negative int. I found a bunch in Modules/_testcapimodule.c, and one in Modules/_io/textio.c in textiowrapper_read_chunk. (hopefully i haven't missed other places.) this code crashes because of the check in textiowrapper_read_chunk: import codecs import _io class MyDec(): def getstate(self): return 420 class MyDecWrapper(): def __call__(self, blabla): return MyDec() quopri = codecs.lookup("quopri") quopri._is_text_encoding = True quopri.incrementaldecoder = MyDecWrapper() t = _io.TextIOWrapper(_io.BytesIO(b'aaaaaa'), newline='\n', encoding="quopri") t.read(42) I guess all of these checks should be changed to check whether PyArg_ParseTuple returned 0. also, before this specific call to PyArg_ParseTuple in textiowrapper_read_chunk, we should check whether 'state' is a tuple. Moreover, this call shouldn't produce a wrong error message, as explained in #28261.
msg300616 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-08-21 09:13
Do you want to provide a PR Oren?
msg300618 - (view) Author: Oren Milman (Oren Milman) * Date: 2017-08-21 10:12
yes, soon. (just wanted to hear your opinion before doing that.)
msg300977 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-08-29 08:58
 New changeset ba7d7365215d791025d1efd25393c91404f2cfc8 by Serhiy Storchaka (Oren Milman) in branch 'master': bpo-31243: Fixed PyArg_ParseTuple failure checks. (#3171) https://github.com/python/cpython/commit/ba7d7365215d791025d1efd25393c91404f2cfc8 
msg300982 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-08-29 12:43
 New changeset c7750c2a3af014a5b742d0159d8957ea95b6c221 by Serhiy Storchaka (Oren Milman) in branch '3.6': [3.6] bpo-31243: Fixed PyArg_ParseTuple failure checks. (GH-3171) (#3233) https://github.com/python/cpython/commit/c7750c2a3af014a5b742d0159d8957ea95b6c221 
msg300993 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-08-29 16:16
 New changeset 20958e6d91d11a80d6c664ce6346791259b1d193 by Serhiy Storchaka (Oren Milman) in branch '2.7': [2.7] bpo-31243: Fixed PyArg_ParseTuple failure checks. (GH-3171) (#3235) https://github.com/python/cpython/commit/20958e6d91d11a80d6c664ce6346791259b1d193 
msg300994 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-08-29 16:18
Thank you for your contribution Oren!
History
Date User Action Args
2022-04-11 14:58:50adminsetgithub: 75426
2017-08-29 16:18:10serhiy.storchakasetstatus: open -> closed
resolution: fixed
messages: + msg300994

stage: backport needed -> resolved
2017-08-29 16:16:17serhiy.storchakasetmessages: + msg300993
2017-08-29 15:05:36Oren Milmansetpull_requests: + pull_request3276
2017-08-29 12:43:34serhiy.storchakasetmessages: + msg300982
2017-08-29 10:54:58Oren Milmansetpull_requests: + pull_request3275
2017-08-29 08:59:37serhiy.storchakasetstage: needs patch -> backport needed
2017-08-29 08:58:33serhiy.storchakasetmessages: + msg300977
2017-08-23 08:10:16serhiy.storchakasetnosy: + benjamin.peterson, stutzbach
components: + IO
2017-08-21 19:00:57Oren Milmansetpull_requests: + pull_request3208
2017-08-21 10:12:45Oren Milmansetmessages: + msg300618
2017-08-21 09:13:56serhiy.storchakasetkeywords: + easy (C)
assignee: serhiy.storchaka
2017-08-21 09:13:26serhiy.storchakasetversions: + Python 2.7, Python 3.6
nosy: + serhiy.storchaka

messages: + msg300616

components: + Extension Modules, - Interpreter Core
stage: needs patch
2017-08-21 08:33:08Oren Milmancreate