Fix: safety checks for opening mmap traces
A message that is not in the archive (sent off-list or not yet received): [email protected]
Mathieu Desnoyers
AppliedQuoted 5 lines · * Julien Desfossez ([email protected]) wrote:
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 <[email protected]>
merged, thanks!
Mathieu
Quoted 59 lines
--- formats/ctf/ctf.c | 9 +++++++++ lib/context.c | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-)formats/ctf/ctf.c +9
-0@@ -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;lib/context.c +4
-2@@ -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);Signature · 1 line
1.7.10.4
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com