* 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

> ---
>  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 f33fa33..69917f7 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 373944c..e2c1739 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);
> -- 
> 1.7.10.4
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to