2017-03-21 16:12:16

by John Kacur

[permalink] [raw]
Subject: [PATCH] trace-cmd: Fix segmentation fault in trace-snapshot

To reproduce the problem:

plugin 'wakeup'
trace-cmd: Device or resource busy
Segmentation fault (core dumped)

When the user triggers a condition such as EBUSY the program should die
gracefully. The problem here is simply caused by an extra conversion
specifier in "die" in the write_file function

Signed-off-by: John Kacur <[email protected]>
---
trace-snapshot.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/trace-snapshot.c b/trace-snapshot.c
index 9d3608c49563..771b065ccfa4 100644
--- a/trace-snapshot.c
+++ b/trace-snapshot.c
@@ -42,7 +42,8 @@ static void write_file(const char *name, char *val)

n = write(fd, val, strlen(val));
if (n < 0)
- die("failed to write '%d' to %s\n", path);
+ die("failed to write to %s\n", path);
+
tracecmd_put_tracing_file(path);
close(fd);
}
--
2.5.5


2017-03-21 18:37:55

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] trace-cmd: Fix segmentation fault in trace-snapshot

On Tue, 21 Mar 2017 17:11:53 +0100
John Kacur <[email protected]> wrote:

> To reproduce the problem:
>
> plugin 'wakeup'
> trace-cmd: Device or resource busy
> Segmentation fault (core dumped)
>
> When the user triggers a condition such as EBUSY the program should
> die gracefully. The problem here is simply caused by an extra
> conversion specifier in "die" in the write_file function

Thanks John!

I'm currently traveling but I'll apply this when I get a chance.

-- Steve

>
> Signed-off-by: John Kacur <[email protected]>
> ---
> trace-snapshot.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/trace-snapshot.c b/trace-snapshot.c
> index 9d3608c49563..771b065ccfa4 100644
> --- a/trace-snapshot.c
> +++ b/trace-snapshot.c
> @@ -42,7 +42,8 @@ static void write_file(const char *name, char *val)
>
> n = write(fd, val, strlen(val));
> if (n < 0)
> - die("failed to write '%d' to %s\n", path);
> + die("failed to write to %s\n", path);
> +
> tracecmd_put_tracing_file(path);
> close(fd);
> }