From 4a2def5223b7001f59acf5a0e958f9d2964dbf65 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Tue, 21 Apr 2020 14:13:47 +0200 Subject: [PATCH] dir_scan.c: Fix integer overflow when list of file names in dir exceeds 2GiB Fixes #150 --- src/dir_scan.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dir_scan.c b/src/dir_scan.c index 879e13d..74c123a 100644 --- a/src/dir_scan.c +++ b/src/dir_scan.c @@ -118,8 +118,8 @@ static char *dir_read(int *err) { DIR *dir; struct dirent *item; char *buf = NULL; - int buflen = 512; - int off = 0; + size_t buflen = 512; + size_t off = 0; if((dir = opendir(".")) == NULL) { *err = 1; @@ -132,7 +132,7 @@ static char *dir_read(int *err) { while((item = readdir(dir)) != NULL) { if(item->d_name[0] == '.' && (item->d_name[1] == 0 || (item->d_name[1] == '.' && item->d_name[2] == 0))) continue; - int req = off+3+strlen(item->d_name); + size_t req = off+3+strlen(item->d_name); if(req > buflen) { buflen = req < buflen*2 ? buflen*2 : req; buf = xrealloc(buf, buflen);