perf buildid: Fix possible unterminated readlink() result buffer
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Fri, 14 Oct 2011 17:00:47 +0000 (19:00 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 14 Oct 2011 15:49:35 +0000 (12:49 -0300)
The readlink function doesn't guarantee that a '\0' will be put at the
end of the provided buffer if there is no space left.

No need to do "buf[len] = '\0';" since the buffer is allocated with
zalloc().

Link: http://lkml.kernel.org/r/4E986ABF.9040706@intra2net.com
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/header.c

index f2ceb0f7d66947ef3836d056f527a15a5def99f4..2143a32638c26c8f469e73f5343fafe7bfd0656c 100644 (file)
@@ -1289,7 +1289,7 @@ int build_id_cache__remove_s(const char *sbuild_id, const char *debugdir)
        if (access(linkname, F_OK))
                goto out_free;
 
-       if (readlink(linkname, filename, size) < 0)
+       if (readlink(linkname, filename, size - 1) < 0)
                goto out_free;
 
        if (unlink(linkname))