commit 573ef00c91fc70edb76afd72f44b9b7bfffd23ff
Author: Michael Forney <[email protected]>
Date:   Mon Dec 8 02:19:34 2014 +0000

    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.

diff --git a/ls.c b/ls.c
index 24af998..ef3f5f6 100644
--- a/ls.c
+++ b/ls.c
@@ -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));


Reply via email to