From 5d95b2db86d36730ce4b7b5dffcfae32e0c21649 Mon Sep 17 00:00:00 2001 From: Julien Desfossez Date: Wed, 25 Jul 2012 09:32:12 -0400 Subject: [PATCH] Fix: check if handle is valid Fixes: #317 [ Edit by Mathieu Desnoyers: put successful return at end of function, and error return with the test for error. ] Signed-off-by: Julien Desfossez Signed-off-by: Mathieu Desnoyers --- include/babeltrace/trace-handle.h | 7 ++++--- lib/trace-handle.c | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/babeltrace/trace-handle.h b/include/babeltrace/trace-handle.h index 65171e70..4c85b670 100644 --- a/include/babeltrace/trace-handle.h +++ b/include/babeltrace/trace-handle.h @@ -34,19 +34,20 @@ struct bt_trace_handle; struct bt_ctf_event; /* - * bt_trace_handle_get_path : returns the path of a trace_handle. + * bt_trace_handle_get_path : returns the path of a trace_handle or NULL + * on error. */ const char *bt_trace_handle_get_path(struct bt_context *ctx, int handle_id); /* * bt_trace_handle_get_timestamp_begin : returns the creation time of the buffers - * of a trace. + * of a trace or -1ULL on error. */ uint64_t bt_trace_handle_get_timestamp_begin(struct bt_context *ctx, int handle_id); /* * bt_trace_handle_get_timestamp_end : returns the destruction timestamp of the - * buffers of a trace. + * buffers of a trace or -1ULL on error. */ uint64_t bt_trace_handle_get_timestamp_end(struct bt_context *ctx, int handle_id); diff --git a/lib/trace-handle.c b/lib/trace-handle.c index 6ba3ec20..050268f6 100644 --- a/lib/trace-handle.c +++ b/lib/trace-handle.c @@ -52,6 +52,8 @@ const char *bt_trace_handle_get_path(struct bt_context *ctx, int handle_id) handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return NULL; return handle->path; } @@ -61,6 +63,8 @@ uint64_t bt_trace_handle_get_timestamp_begin(struct bt_context *ctx, int handle_ handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return -1ULL; return handle->timestamp_begin; } @@ -70,5 +74,7 @@ uint64_t bt_trace_handle_get_timestamp_end(struct bt_context *ctx, int handle_id handle = g_hash_table_lookup(ctx->trace_handles, (gpointer) (unsigned long) handle_id); + if (!handle) + return -1ULL; return handle->timestamp_end; } -- 2.34.1