Issue 27775: shlex.split(None)
causes infinite loop (original) (raw)
Created on 2016-08-16 08:27 by cool-RR, last changed 2022-04-11 14:58 by admin. This issue is now closed.
Messages (2)
Author: Ram Rachum (cool-RR) *
Date: 2016-08-16 08:27
I had a code that would freeze, and after debugging I realized that a bug in my code caused shlex.split(None)
to be called, which puts Python in an infinite loop.
We probably want to do an if not isinstance(s, ...): raise TypeError('Bla bla')
at the start of the shlex
function, or maybe at shlex.__init__
, or maybe both.
What bothers me though, is that it seems that shlex can accept both a string and a stream, so we should allow both of these and not others. Now, I don't know how to check whether it's a proper stream. Would isinstance(s, io.IOBase)
be good enough? Will it catch all of the streams that people might use in shlex.split
?
(Also, I recently proposed something related in python-ideas: https://groups.google.com/forum/#!searchin/python-ideas/stream%7Csort:relevance/python-ideas/uYlnnH52VEA/PSHkQRtaBwAJ )
Author: R. David Murray (r.david.murray) *
Date: 2016-08-16 13:19
This is working as designed. None means read from stdin. It is already documented in a note under shlex.split, so there isn't a doc issue here either.
(Aside: 'crash' means segfault, which this isn't.)
You could try to recast this as a feature request, but I think backward compatibility would shoot that down. You could raise it on python-ideas if you want to, but it is quite likely that someone is using this feature, so I don't think it likely we'll want to change it.
History
Date
User
Action
Args
2022-04-11 14:58:34
admin
set
github: 71962
2016-08-16 13:19:40
r.david.murray
set
status: open -> closed
type: crash -> behavior
nosy: + r.david.murray
messages: +
resolution: not a bug
stage: resolved
2016-08-16 08:27:37
cool-RR
create