summaryrefslogtreecommitdiffstatshomepage
path: root/extmod/vfs_lfsx.c
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2020-08-31 14:25:20 +1000
committerDamien George <damien@micropython.org>2020-09-01 12:36:28 +1000
commitc70e59965977df97d1134f0dcadb9cd4ed58139f (patch)
treed7131bc7784067efd8521441b0495a587f3991bd /extmod/vfs_lfsx.c
parent40153b800a8324f6cf3e47dd71cafcf90c3c4718 (diff)
downloadmicropython-c70e59965977df97d1134f0dcadb9cd4ed58139f.tar.gz
micropython-c70e59965977df97d1134f0dcadb9cd4ed58139f.zip
extmod/vfs: Support larger integer range in VFS stat time fields.
On ports like unix where the Epoch is 1970/1/1 and atime/mtime/ctime are in seconds since the Epoch, this value will overflow a small-int on 32-bit systems. So far this is only an issue on 32-bit unix builds that use the VFS layer (eg dev and coverage unix variants) but the fix (using mp_obj_new_int_from_uint instead of MP_OBJ_NEW_SMALL_INT) is there for all ports so as to not complicate the code, and because they will need the range one day. Also apply a similar fix to other fields in VfsPosix.stat because they may also be large. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'extmod/vfs_lfsx.c')
-rw-r--r--extmod/vfs_lfsx.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/extmod/vfs_lfsx.c b/extmod/vfs_lfsx.c
index 511b741b0d..9f5d9ce6db 100644
--- a/extmod/vfs_lfsx.c
+++ b/extmod/vfs_lfsx.c
@@ -377,9 +377,9 @@ STATIC mp_obj_t MP_VFS_LFSx(stat)(mp_obj_t self_in, mp_obj_t path_in) {
t->items[4] = MP_OBJ_NEW_SMALL_INT(0); // st_uid
t->items[5] = MP_OBJ_NEW_SMALL_INT(0); // st_gid
t->items[6] = mp_obj_new_int_from_uint(info.size); // st_size
- t->items[7] = MP_OBJ_NEW_SMALL_INT(mtime); // st_atime
- t->items[8] = MP_OBJ_NEW_SMALL_INT(mtime); // st_mtime
- t->items[9] = MP_OBJ_NEW_SMALL_INT(mtime); // st_ctime
+ t->items[7] = mp_obj_new_int_from_uint(mtime); // st_atime
+ t->items[8] = mp_obj_new_int_from_uint(mtime); // st_mtime
+ t->items[9] = mp_obj_new_int_from_uint(mtime); // st_ctime
return MP_OBJ_FROM_PTR(t);
}