From a902da1ce7f45c35121f2a9a294c94e23b9d3fe7 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sat, 30 Jul 2022 00:45:26 +0200 Subject: [PATCH] wutdevoptab: Prevent file-offset overflow in seek implementation --- libraries/wutdevoptab/devoptab_fs_seek.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/wutdevoptab/devoptab_fs_seek.c b/libraries/wutdevoptab/devoptab_fs_seek.c index 03289d09..922efe8d 100644 --- a/libraries/wutdevoptab/devoptab_fs_seek.c +++ b/libraries/wutdevoptab/devoptab_fs_seek.c @@ -49,11 +49,14 @@ __wut_fs_seek(struct _reent *r, return -1; } - // TODO: A better check that prevents overflow. if(pos < 0 && offset < -pos) { // Don't allow seek to before the beginning of the file r->_errno = EINVAL; return -1; + } else if (offset + pos > UINT32_MAX) { + // Check for overflow + r->_errno = EINVAL; + return -1; } uint32_t old_offset = file->offset;