Messages in this thread | | | Date | Tue, 16 Oct 2012 17:13:46 +0900 | Subject | Re: [PATCH] perf probe: convert_name_to_addr() allocated the wrong size buffer for a function name | From | Hyeoncheol Lee <> |
| |
Hi,
2012/10/16 Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>: > (2012/10/16 10:37), Hyeoncheol Lee wrote: >> convert_name_to_addr() allocated sizeof(char *) * MAX_PROBE_ARGS >> bytes for a function name > > Yeah, that one was from my laziness... > >> >> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> >> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> >> Signed-off-by: Hyeoncheol Lee <hyc.lee@gmail.com> >> --- >> tools/perf/util/probe-event.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c >> index 49a256e..bb40ed4 100644 >> --- a/tools/perf/util/probe-event.c >> +++ b/tools/perf/util/probe-event.c >> @@ -2352,13 +2352,14 @@ static int convert_name_to_addr(struct perf_probe_event *pev, const char *exec) >> free(exec_copy); >> } >> free(pp->function); >> - pp->function = zalloc(sizeof(char *) * MAX_PROBE_ARGS); >> + pp->function = zalloc(sizeof(char) * >> + (3 + sizeof(unsigned long long) * 2)); > > Could you comment that this is enough long here? >
Because a hexadecimal address that starts with "0x" will be stored in pp->function. sizeof(unsigned long long) * 2 is maximum length of hexadecimal number of variable "vaddr" and 3 bytes are for "0x" and null character.
>> if (!pp->function) { >> ret = -ENOMEM; >> pr_warning("Failed to allocate memory by zalloc.\n"); >> goto out; >> } >> - e_snprintf(pp->function, MAX_PROBE_ARGS, "0x%llx", vaddr); >> + sprintf(pp->function, "0x%llx", vaddr); > > And at least we should use snprintf instead of sprintf... > (I think ret = e_snprintf(...) is better) >
You are right, but I didn't want to write down the length of "pp->function" again.
>> ret = 0; >> >> out: >> > > Thank you, > > -- > Masami HIRAMATSU > IT Management Research Dept. Linux Technology Center > Hitachi, Ltd., Yokohama Research Laboratory > E-mail: masami.hiramatsu.pt@hitachi.com > >
Thank you very much!
| |