ls: Always leave room for the NULL byte in the link target

Otherwise, if the length of the link target is the same as BUFSIZ, we
will try to write past the end of buf.
This commit is contained in:
Michael Forney 2014-12-08 02:19:34 +00:00 committed by sin
parent 46ea55a258
commit 573ef00c91
1 changed files with 1 additions and 1 deletions

2
ls.c
View File

@ -300,7 +300,7 @@ output(Entry *ent)
printf("%10lu ", (unsigned long)ent->size);
printf("%s %s%s", buf, ent->name, indicator(ent->mode));
if (S_ISLNK(ent->mode)) {
if ((len = readlink(ent->name, buf, sizeof buf)) < 0)
if ((len = readlink(ent->name, buf, sizeof buf - 1)) < 0)
eprintf("readlink %s:", ent->name);
buf[len] = '\0';
printf(" -> %s%s", buf, indicator(ent->tmode));