From 660992ee3acab3932dccd097c7ef20843b10490f Mon Sep 17 00:00:00 2001 From: Franck Bui-Huu Date: Fri, 10 Dec 2010 22:06:26 +0100 Subject: [PATCH] --- yaml --- r: 223546 b: refs/heads/master c: 68a7a771ad0e2959983729bf88cbc74a7014438f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/tools/perf/util/header.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 82da98c940f6..7a6db6197b48 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c3a34e06db25a8c74e196517732d65cdb56028ec +refs/heads/master: 68a7a771ad0e2959983729bf88cbc74a7014438f diff --git a/trunk/tools/perf/util/header.c b/trunk/tools/perf/util/header.c index 64a85bafde63..7cba0551a565 100644 --- a/trunk/tools/perf/util/header.c +++ b/trunk/tools/perf/util/header.c @@ -265,15 +265,16 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir, const char *name, bool is_kallsyms) { const size_t size = PATH_MAX; - char *filename = malloc(size), + char *realname = realpath(name, NULL), + *filename = malloc(size), *linkname = malloc(size), *targetname; int len, err = -1; - if (filename == NULL || linkname == NULL) + if (realname == NULL || filename == NULL || linkname == NULL) goto out_free; len = snprintf(filename, size, "%s%s%s", - debugdir, is_kallsyms ? "/" : "", name); + debugdir, is_kallsyms ? "/" : "", realname); if (mkdir_p(filename, 0755)) goto out_free; @@ -283,7 +284,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir, if (is_kallsyms) { if (copyfile("/proc/kallsyms", filename)) goto out_free; - } else if (link(name, filename) && copyfile(name, filename)) + } else if (link(realname, filename) && copyfile(name, filename)) goto out_free; } @@ -300,6 +301,7 @@ int build_id_cache__add_s(const char *sbuild_id, const char *debugdir, if (symlink(targetname, linkname) == 0) err = 0; out_free: + free(realname); free(filename); free(linkname); return err;