Since system_path() returns malloc'd string if given path is not an absolute path, perf_exec_path() sometimes returns a static string and sometimes returns a malloc'd string depending on the environment variables or command options. This may cause a memory leak because the caller can not unconditionally free the returned string. This fixes perf_exec_path() and system_path() to always return a malloc'd string, so the caller can always free it. Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/20151119060453.14210.65666.stgit@localhost.localdomain Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
13 lines
514 B
C
13 lines
514 B
C
#ifndef __PERF_EXEC_CMD_H
|
|
#define __PERF_EXEC_CMD_H
|
|
|
|
extern void perf_set_argv_exec_path(const char *exec_path);
|
|
extern const char *perf_extract_argv0_path(const char *path);
|
|
extern void setup_path(void);
|
|
extern int execv_perf_cmd(const char **argv); /* NULL terminated */
|
|
extern int execl_perf_cmd(const char *cmd, ...);
|
|
/* perf_exec_path and system_path return malloc'd string, caller must free it */
|
|
extern char *perf_exec_path(void);
|
|
extern char *system_path(const char *path);
|
|
|
|
#endif /* __PERF_EXEC_CMD_H */
|