John Leitch added the comment:

First, let me begin by saying I believe this patch will fix the buffer 
over-read, which is a good step forward.

However, after giving the matter more thought, and at the risk of wearing out 
my welcome, I am of the belief that relying on the CRT to handle malformed 
format strings is the wrong approach. As per the C spec, strftime's behavior 
when handling invalid format strings is undefined:

"If a conversion specifier is not one of the above, the behavior is undefined"

Quite often, "undefined" translates to "exploitable". And at the very least, by 
not performing thorough enough validation, Python is misusing strftime(), which 
may lead to crashes or undermine memory safety. Of course, this is all 
speculation--I haven't the time or resource to learn other platforms to see 
what's possible. But, even if I could, the task would be Sisyphean because 
there's simply no way to know what the future holds when dealing with 
implementation that could change at any point.

I realize we must be pragmatic with matters such as this, and a dramatic change 
could be breaking for some Python apps. Even so, I feel it's worth vocalizing 
these concerns. As a principal, I think that "safe", well-formed Python should 
never be able to perform operations that lead to undefined behavior in the 
underlying runtime.

Alright, rant done. If at any point in time locking down Python's strftime with 
more aggressive validation is considered viable, I am more than willing to take 
a shot at submitting a patch.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24917>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to