circuitpython/extmod
Andrew Leech 4e0964b59f extmod/vfs: Add finaliser to ilistdir to close directory handle.
When iterating over filesystem/folders with os.iterdir(), an open file
(directory) handle is used internally.  Currently this file handle is only
closed once the iterator is completely drained, eg. once all entries have
been looped over / converted into list etc.

If a program opens an iterdir but does not loop over it, or starts to loop
over the iterator but breaks out of the loop, then the handle never gets
closed.  In this state, when the iter object is cleaned up by the garbage
collector this open handle can cause corruption of the filesystem.

Fixes issues #6568 and #8506.
2022-09-13 13:00:42 +10:00
..
axtls-include extmod: Update for move of crypto-algorithms, re1.5, uzlib to lib. 2021-07-12 16:37:07 +10:00
btstack extmod/modbluetooth: Replace def_handle with end_handle in char IRQ. 2022-09-09 11:24:24 +10:00
lwip-include all: Unify header guard usage. 2017-07-18 11:57:39 +10:00
nimble extmod/modbluetooth: Replace def_handle with end_handle in char IRQ. 2022-09-09 11:24:24 +10:00
uasyncio all: Update all manifest.py files to use new features. 2022-09-05 18:43:18 +10:00
extmod.cmake extmod: Always use custom mbedtls error message code. 2022-07-18 22:55:22 +10:00
extmod.mk extmod: Always use custom mbedtls error message code. 2022-07-18 22:55:22 +10:00
font_petme128_8x8.h extmod: Move font_petme128_8x8.h from ports/stm32 to extmod. 2022-05-05 13:30:40 +10:00
machine_bitstream.c extmod: Add machine.bitstream. 2021-08-19 22:50:11 +10:00
machine_bitstream.h extmod: Add machine.bitstream. 2021-08-19 22:50:11 +10:00
machine_i2c.c extmod/machine_i2c: Call MICROPY_PY_EVENT_HOOK during i2c.scan(). 2022-08-31 12:06:11 +10:00
machine_i2c.h extmod/machine_i2c: Only use WRITE1 option if transfer supports it. 2022-06-17 11:57:57 +10:00
machine_mem.c extmod/machine_mem: Only allow integers in machine.memX subscript. 2020-11-13 11:13:37 +11:00
machine_mem.h all: Use the name MicroPython consistently in comments 2017-07-31 18:35:40 +10:00
machine_pinbase.c extmod/machine_pinbase: Put PinBase singleton in ROM. 2017-09-12 16:00:21 +10:00
machine_pinbase.h all: Unify header guard usage. 2017-07-18 11:57:39 +10:00
machine_pulse.c esp8266: Provide custom machine_time_pulse_us that feeds soft WDT. 2019-07-01 22:53:00 +10:00
machine_pulse.h all: Unify header guard usage. 2017-07-18 11:57:39 +10:00
machine_pwm.c extmod/machine_pwm: Factor out machine.PWM bindings to common code. 2021-09-04 16:31:17 +10:00
machine_pwm.h extmod/machine_pwm: Factor out machine.PWM bindings to common code. 2021-09-04 16:31:17 +10:00
machine_signal.c all: Use mp_obj_malloc everywhere it's applicable. 2022-05-03 22:28:14 +10:00
machine_signal.h all: Unify header guard usage. 2017-07-18 11:57:39 +10:00
machine_spi.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
machine_spi.h ports: Support legacy soft I2C/SPI construction via id=-1 arg. 2020-10-01 12:57:10 +10:00
misc.h stm32/moduos: Convert module to use extmod version. 2022-03-09 10:03:23 +11:00
modbluetooth.c extmod/modbluetooth: Replace def_handle with end_handle in char IRQ. 2022-09-09 11:24:24 +10:00
modbluetooth.h extmod/modbluetooth: Replace def_handle with end_handle in char IRQ. 2022-09-09 11:24:24 +10:00
modbtree.c extmod/modbtree: Use buffer protocol for keys/values. 2022-06-21 00:44:49 +10:00
modframebuf.c extmod/modframebuf: Improve poly-fill boundary pixels. 2022-08-19 23:31:28 +10:00
modlwip.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
modnetwork.c extmod/modnetwork: Use MP_REGISTER_ROOT_POINTER(). 2022-07-18 13:50:25 +10:00
modnetwork.h extmod/modusocket: Add socket state to track new/listening/conn/closed. 2022-06-08 14:13:59 +10:00
modonewire.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduasyncio.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
modubinascii.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
moducryptolib.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
moductypes.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduhashlib.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
moduheapq.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
modujson.c py/objstr: Optimise mp_obj_new_str_from_vstr for known-safe strings. 2022-08-26 16:44:35 +10:00
moduos.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduplatform.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduplatform.h extmod/moduplatform: Move platform PP definitions into a header. 2022-02-22 00:59:14 +11:00
modurandom.c extmod/modurandom: Fix missing void in empty argument list. 2022-06-07 23:41:49 +10:00
modure.c extmod/modure: Convert byte offsets to unicode indices when necessary. 2022-09-06 17:08:18 +10:00
moduselect.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
modusocket.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
modussl_axtls.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
modussl_mbedtls.c extmod/modussl_mbedtls: Set a more sensible default debug log level. 2022-08-06 00:11:46 +10:00
modutimeq.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduwebsocket.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
moduwebsocket.h extmod/moduwebsocket: Refactor websocket to uwebsocket. 2019-02-14 00:35:45 +11:00
moduzlib.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
modwebrepl.c all: Remove third argument to MP_REGISTER_MODULE. 2022-06-02 16:31:37 +10:00
mpbthci.c extmod/modbluetooth: Refactor stack/hci/driver/port bindings. 2020-09-08 11:41:31 +10:00
mpbthci.h extmod/nimble: Add support for reading whole HCI UART packets. 2022-06-03 11:53:28 +10:00
network_cyw43.c extmod/network_cyw43: Add hostname config option. 2022-08-06 00:30:57 +10:00
network_cyw43.h extmod: Add network-level class binding to cyw43 driver. 2019-06-03 16:47:35 +10:00
network_ninaw10.c extmod/network_ninaw10: Move ninaw10 root pointer registrations here. 2022-07-21 16:21:50 +10:00
network_wiznet5k.c extmod/network_wiznet5k: Use the configured DNS address if available. 2022-08-23 15:00:00 +10:00
uos_dupterm.c extmod/uos_dupterm: Use MP_REGISTER_ROOT_POINTER(). 2022-07-18 13:52:01 +10:00
utime_mphal.c extmod/utime: Always invoke mp_hal_delay_ms when >= to 0ms. 2021-07-22 00:05:17 +10:00
utime_mphal.h extmod/utime_mphal: Add generic utime.time_ns() function. 2020-10-01 14:20:42 +10:00
vfs_blockdev.c all: Reformat C and Python source code with tools/codeformat.py. 2020-02-28 10:33:03 +11:00
vfs_fat_diskio.c tools/uncrustify: Enable more opts to remove space between func and '('. 2020-06-19 22:07:32 +10:00
vfs_fat_file.c all: Remove MICROPY_PY_IO_FILEIO config option. 2022-08-18 11:54:17 +10:00
vfs_fat.c extmod/vfs: Add finaliser to ilistdir to close directory handle. 2022-09-13 13:00:42 +10:00
vfs_fat.h extmod: Factor out block-device struct to make independent of fatfs. 2019-10-29 12:12:37 +11:00
vfs_lfs.c all: Update to point to files in new shared/ directory. 2021-07-12 17:08:10 +10:00
vfs_lfs.h extmod: Add VFS littlefs bindings. 2019-10-29 14:17:29 +11:00
vfs_lfsx_file.c all: Remove MICROPY_PY_IO_FILEIO config option. 2022-08-18 11:54:17 +10:00
vfs_lfsx.c extmod/vfs: Add finaliser to ilistdir to close directory handle. 2022-09-13 13:00:42 +10:00
vfs_posix_file.c all: Remove MICROPY_PY_IO_FILEIO config option. 2022-08-18 11:54:17 +10:00
vfs_posix.c extmod/vfs: Add finaliser to ilistdir to close directory handle. 2022-09-13 13:00:42 +10:00
vfs_posix.h extmod/vfs: Introduce a C-level VFS protocol, with fast import_stat. 2018-06-06 14:33:42 +10:00
vfs_reader.c extmod/vfs_reader: Fix mp_reader_new_file to open file in "rb" mode. 2020-08-12 23:40:50 +10:00
vfs.c py/objstr: Split mp_obj_str_from_vstr into bytes/str versions. 2022-08-26 16:43:55 +10:00
vfs.h py/builtin: Clean up and simplify import_stat and builtin_open config. 2022-05-25 13:04:45 +10:00
virtpin.c all: Reformat C and Python source code with tools/codeformat.py. 2020-02-28 10:33:03 +11:00
virtpin.h all: Unify header guard usage. 2017-07-18 11:57:39 +10:00