From 8b19ff4c4b243ca2b0adf9c19bc20c3b83c9c4b1 Mon Sep 17 00:00:00 2001 From: Wenkai Lin Date: Sat, 23 Jul 2022 16:50:28 +0800 Subject: [PATCH 161/183] uadk: fix BufferOverFlow Fix that read or write outside of array bounds of buf if string not ended with 0. Signed-off-by: Wenkai Lin --- wd_mempool.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/wd_mempool.c b/wd_mempool.c index d9259de..6143a69 100644 --- a/wd_mempool.c +++ b/wd_mempool.c @@ -624,7 +624,7 @@ static int get_value_from_sysfs(const char *path, ssize_t path_size) char buf[MAX_ATTR_STR_SIZE]; char *ptrRet = NULL; ssize_t size; - int fd; + int fd, ret; ptrRet = realpath(path, dev_path); if (!ptrRet) { @@ -645,7 +645,14 @@ static int get_value_from_sysfs(const char *path, ssize_t path_size) } close(fd); - return (int)strtol(buf, NULL, 10); + + ret = strtol(buf, NULL, 10); + if (errno == ERANGE) { + WD_ERR("failed to strtol %s, out of range!\n", buf); + goto err_read; + } + + return ret; err_read: close(fd); -- 2.27.0