New submission from Oren Milman <ore...@gmail.com>:

The following code causes an assertion failure (in case there exists a
compressed zip file named 'foo.zip' with a file called 'bar.py' in it):

import zlib
import zipimport
def bad_decompress(*args):
    return None

zlib.decompress = bad_decompress
zipimport.zipimporter('foo.zip').get_source('bar')


This is because get_data() (in Modules/zipimport.c) assumes that
zlib.decompress() returned a bytes object, and returns it.
zipimport_zipimporter_get_source_impl() assumes that get_data() returned a
bytes object, and passes it to PyBytes_AS_STRING(), which asserts it is a bytes
object.

----------
components: Extension Modules
messages: 303100
nosy: Oren Milman
priority: normal
severity: normal
status: open
title: assertion failure in zipimporter.get_source() in case of a bad 
zlib.decompress()
type: crash
versions: Python 3.7

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

Reply via email to