1
1

Fixed buffer overflow when supplying a path longer than PATH_MAX (patch by Tobias Stoeckmann)

git-svn-id: svn://blicky.net/ncdu/trunk@28 ce56bc8d-f834-0410-b703-f827bd498a76
Этот коммит содержится в:
yorhel 2007-11-01 19:40:30 +00:00
родитель db920f8dab
Коммит 8a71f8860c
2 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -60,6 +60,8 @@ char *rpath(const char *from, char *to) {
strcpy(tmp, cwd);
else
tmp[0] = 0;
if(strlen(cur) + 2 > PATH_MAX - strlen(tmp))
return(NULL);
strcat(tmp, "/");
strcat(tmp, cur);
} else
@ -357,6 +359,7 @@ struct dir *showCalc(char *path) {
*lasterr = '\0';
anpos = 0;
lastupdate = 999;
memset(tmp, 0, PATH_MAX);
/* init parent dir */
if(rpath(path, tmp) == NULL || lstat(tmp, &fs) != 0 || !S_ISDIR(fs.st_mode)) {

Просмотреть файл

@ -87,7 +87,10 @@ void parseCli(int argc, char **argv) {
exit(1);
}
} else {
strcpy(sdir, argv[i]);
sdir[PATH_MAX - 1] = 0;
strncpy(sdir, argv[i], PATH_MAX);
if(sdir[PATH_MAX - 1] != 0)
sdir[0] = 0;
}
}
if(s_export && !sdir[0]) {