summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2024-11-15 13:52:04 +1100
committerDamien George <damien@micropython.org>2024-12-20 21:52:19 +1100
commita3128f89ccb1d24d0ddaec7164d2fa8a101b8ac3 (patch)
tree3ee8220ae691d2baf23b70891b8a7ebcbd334175 /tests
parent4e76acc88d8673ce4f43698fbb4c2913e63b0135 (diff)
tests: Fix all file ioctl's to support only MP_STREAM_CLOSE.
A return value of 0 from Python-level `ioctl()` means success, but if that's returned unconditionally it means that the method supports all ioctl calls, which is not true. Returning 0 without doing anything can potentially lead to a crash, eg for MP_STREAM_SEEK which requires returning a value in the passed-in struct pointer. This commit makes it so that all `ioctl()` methods respond only to MP_STREAM_CLOSE, ie they return -1 (indicating error) for all other ioctl calls. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/micropython/builtin_execfile.py4
-rw-r--r--tests/micropython/import_mpy_invalid.py4
-rw-r--r--tests/micropython/import_mpy_native.py4
-rw-r--r--tests/micropython/import_mpy_native_gc.py4
-rw-r--r--tests/perf_bench/core_import_mpy_multi.py4
-rw-r--r--tests/perf_bench/core_import_mpy_single.py4
-rwxr-xr-xtests/run-natmodtests.py4
-rwxr-xr-xtests/run-tests.py4
8 files changed, 24 insertions, 8 deletions
diff --git a/tests/micropython/builtin_execfile.py b/tests/micropython/builtin_execfile.py
index a905521c6..75a867bb9 100644
--- a/tests/micropython/builtin_execfile.py
+++ b/tests/micropython/builtin_execfile.py
@@ -16,7 +16,9 @@ class File(io.IOBase):
self.off = 0
def ioctl(self, request, arg):
- return 0
+ if request == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
def readinto(self, buf):
buf[:] = memoryview(self.data)[self.off : self.off + len(buf)]
diff --git a/tests/micropython/import_mpy_invalid.py b/tests/micropython/import_mpy_invalid.py
index 89fdf4483..f928d45c7 100644
--- a/tests/micropython/import_mpy_invalid.py
+++ b/tests/micropython/import_mpy_invalid.py
@@ -22,7 +22,9 @@ class UserFile(io.IOBase):
return n
def ioctl(self, req, arg):
- return 0
+ if req == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
class UserFS:
diff --git a/tests/micropython/import_mpy_native.py b/tests/micropython/import_mpy_native.py
index 8f5de25a0..ac5e724e8 100644
--- a/tests/micropython/import_mpy_native.py
+++ b/tests/micropython/import_mpy_native.py
@@ -28,7 +28,9 @@ class UserFile(io.IOBase):
return n
def ioctl(self, req, arg):
- return 0
+ if req == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
class UserFS:
diff --git a/tests/micropython/import_mpy_native_gc.py b/tests/micropython/import_mpy_native_gc.py
index bdeb612b4..851eb3922 100644
--- a/tests/micropython/import_mpy_native_gc.py
+++ b/tests/micropython/import_mpy_native_gc.py
@@ -22,7 +22,9 @@ class UserFile(io.IOBase):
return n
def ioctl(self, req, arg):
- return 0
+ if req == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
class UserFS:
diff --git a/tests/perf_bench/core_import_mpy_multi.py b/tests/perf_bench/core_import_mpy_multi.py
index 33437f9da..8affa157f 100644
--- a/tests/perf_bench/core_import_mpy_multi.py
+++ b/tests/perf_bench/core_import_mpy_multi.py
@@ -31,7 +31,9 @@ class File(io.IOBase):
self.off = 0
def ioctl(self, request, arg):
- return 0
+ if request == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
def readinto(self, buf):
buf[:] = memoryview(file_data)[self.off : self.off + len(buf)]
diff --git a/tests/perf_bench/core_import_mpy_single.py b/tests/perf_bench/core_import_mpy_single.py
index 18454b8fd..4d9aa67bf 100644
--- a/tests/perf_bench/core_import_mpy_single.py
+++ b/tests/perf_bench/core_import_mpy_single.py
@@ -86,7 +86,9 @@ class File(io.IOBase):
self.off = 0
def ioctl(self, request, arg):
- return 0
+ if request == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
def readinto(self, buf):
buf[:] = memoryview(file_data)[self.off : self.off + len(buf)]
diff --git a/tests/run-natmodtests.py b/tests/run-natmodtests.py
index f1a2a9746..1fe44bec1 100755
--- a/tests/run-natmodtests.py
+++ b/tests/run-natmodtests.py
@@ -35,7 +35,9 @@ class __File(io.IOBase):
def __init__(self):
self.off = 0
def ioctl(self, request, arg):
- return 0
+ if request == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
def readinto(self, buf):
buf[:] = memoryview(__buf)[self.off:self.off + len(buf)]
self.off += len(buf)
diff --git a/tests/run-tests.py b/tests/run-tests.py
index c72178cd7..a609a1fcb 100755
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -68,7 +68,9 @@ class __File(io.IOBase):
sys.modules['__injected_test'].__name__ = '__main__'
self.off = 0
def ioctl(self, request, arg):
- return 0
+ if request == 4: # MP_STREAM_CLOSE
+ return 0
+ return -1
def readinto(self, buf):
buf[:] = memoryview(__buf)[self.off:self.off + len(buf)]
self.off += len(buf)