From b7a9ef231f9d9446fc44f8a34ed5a2dd3efd83a0 Mon Sep 17 00:00:00 2001 From: David Ahern Date: Sun, 29 Jul 2012 20:54:35 -0600 Subject: [PATCH] --- yaml --- r: 321418 b: refs/heads/master c: 347ed9903a10179d1cf733d5d77072b283d89da3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/tools/perf/util/symbol.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 10ef790dc845..38e7b8b8357b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 56e6f602aa4432f7fe90a0d9ba379b2735b07b6b +refs/heads/master: 347ed9903a10179d1cf733d5d77072b283d89da3 diff --git a/trunk/tools/perf/util/symbol.c b/trunk/tools/perf/util/symbol.c index fe86612afadc..8b63b678e127 100644 --- a/trunk/tools/perf/util/symbol.c +++ b/trunk/tools/perf/util/symbol.c @@ -2875,6 +2875,7 @@ int machines__create_guest_kernel_maps(struct rb_root *machines) int i, items = 0; char path[PATH_MAX]; pid_t pid; + char *endp; if (symbol_conf.default_guest_vmlinux_name || symbol_conf.default_guest_modules || @@ -2891,7 +2892,14 @@ int machines__create_guest_kernel_maps(struct rb_root *machines) /* Filter out . and .. */ continue; } - pid = atoi(namelist[i]->d_name); + pid = (pid_t)strtol(namelist[i]->d_name, &endp, 10); + if ((*endp != '\0') || + (endp == namelist[i]->d_name) || + (errno == ERANGE)) { + pr_debug("invalid directory (%s). Skipping.\n", + namelist[i]->d_name); + continue; + } sprintf(path, "%s/%s/proc/kallsyms", symbol_conf.guestmount, namelist[i]->d_name);