From 4b013ec3ff688b8dc3af0cc9159a5fc4c27d8d20 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 8 Aug 2025 08:53:14 -0500 Subject: extmod/vfs_reader: Check that open() resulted in a file-like object. That is, an object whose type defines the protocol slot. Note that due to protocol confusion, a variant of the original crasher that returned e.g., a machine.Pin instance could still lead to a crash (#17852). Fixes issue #17841. Signed-off-by: Jeff Epler Signed-off-by: Jeff Epler --- tests/micropython/builtin_execfile.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests/micropython/builtin_execfile.py') diff --git a/tests/micropython/builtin_execfile.py b/tests/micropython/builtin_execfile.py index 75a867bb9..4fd4d66d4 100644 --- a/tests/micropython/builtin_execfile.py +++ b/tests/micropython/builtin_execfile.py @@ -75,3 +75,24 @@ except TypeError: # Unmount the VFS object. vfs.umount(fs) + + +class EvilFilesystem: + def mount(self, readonly, mkfs): + print("mount", readonly, mkfs) + + def umount(self): + print("umount") + + def open(self, file, mode): + return None + + +fs = EvilFilesystem() +vfs.mount(fs, "/test_mnt") +try: + execfile("/test_mnt/test.py") + print("ExecFile succeeded") +except OSError: + print("OSError") +vfs.umount(fs) -- cgit v1.2.3