From afe9cd4a86956a4ae2664422a557b9975ff02b00 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Fri, 10 Aug 2012 17:36:48 -0400 Subject: [PATCH] Fix: safety checks for opening mmap traces When adding a mmap trace in the context, we don't have any tracefile and index, some safety checks were missing in the path handling and timestamp manipulation. Signed-off-by: Julien Desfossez Signed-off-by: Mathieu Desnoyers --- formats/ctf/ctf.c | 9 +++++++++ lib/context.c | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index f33fa339..69917f7f 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -167,6 +167,9 @@ uint64_t ctf_timestamp_begin(struct trace_descriptor *descriptor, if (!stream_pos->packet_real_index) goto error; + if (stream_pos->packet_real_index->len <= 0) + continue; + if (type == BT_CLOCK_REAL) { index = &g_array_index(stream_pos->packet_real_index, struct packet_index, @@ -225,6 +228,9 @@ uint64_t ctf_timestamp_end(struct trace_descriptor *descriptor, if (!stream_pos->packet_real_index) goto error; + if (stream_pos->packet_real_index->len <= 0) + continue; + if (type == BT_CLOCK_REAL) { index = &g_array_index(stream_pos->packet_real_index, struct packet_index, @@ -1845,6 +1851,9 @@ int ctf_convert_index_timestamp(struct trace_descriptor *tdp) stream_pos->packet_real_index = g_array_new(FALSE, TRUE, sizeof(struct packet_index)); + if (!stream_pos->packet_cycles_index) + continue; + for (k = 0; k < stream_pos->packet_cycles_index->len; k++) { struct packet_index *index; struct packet_index new_index; diff --git a/lib/context.c b/lib/context.c index 373944c2..e2c1739c 100644 --- a/lib/context.c +++ b/lib/context.c @@ -104,8 +104,10 @@ int bt_context_add_trace(struct bt_context *ctx, const char *path, } handle->format = fmt; handle->td = td; - strncpy(handle->path, path, PATH_MAX); - handle->path[PATH_MAX - 1] = '\0'; + if (path) { + strncpy(handle->path, path, PATH_MAX); + handle->path[PATH_MAX - 1] = '\0'; + } if (fmt->set_handle) fmt->set_handle(td, handle); -- 2.34.1