summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-04-21 14:13:47 +0200
committerYorhel <git@yorhel.nl>2020-04-21 14:13:51 +0200
commit4a2def5223b7001f59acf5a0e958f9d2964dbf65 (patch)
tree7ea91d9341392dbf05653f6219c6d5c2f3209627
parent1563e562238c57b9c0040d0e9a37a9dd4d1e5fad (diff)
dir_scan.c: Fix integer overflow when list of file names in dir exceeds 2GiB
Fixes #150
-rw-r--r--src/dir_scan.c6
1 files 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);