diff options
author | Yorhel <git@yorhel.nl> | 2020-04-21 14:13:47 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-04-21 14:13:51 +0200 |
commit | 4a2def5223b7001f59acf5a0e958f9d2964dbf65 (patch) | |
tree | 7ea91d9341392dbf05653f6219c6d5c2f3209627 | |
parent | 1563e562238c57b9c0040d0e9a37a9dd4d1e5fad (diff) |
dir_scan.c: Fix integer overflow when list of file names in dir exceeds 2GiB
Fixes #150
-rw-r--r-- | src/dir_scan.c | 6 |
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); |