From 60a977345d9e5e2631518f0d62aaa278baf42dd2 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 3 Aug 2017 09:59:20 -0400 Subject: [PATCH] Fix: unchecked return values of bt_value getters MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit CID 1376153 (#1 of 1): Unchecked return value (CHECKED_RETURN). check_return: Calling bt_value_bool_get without checking return value (as is done elsewhere 18 out of 20 times). Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- cli/babeltrace.c | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/cli/babeltrace.c b/cli/babeltrace.c index 540bd11d..6920aabc 100644 --- a/cli/babeltrace.c +++ b/cli/babeltrace.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -294,6 +295,7 @@ void print_value_rec(FILE *fp, struct bt_value *value, size_t indent) const char *str_val; int size; int i; + enum bt_value_status status; if (!value) { return; @@ -305,32 +307,46 @@ void print_value_rec(FILE *fp, struct bt_value *value, size_t indent) bt_common_color_reset()); break; case BT_VALUE_TYPE_BOOL: - bt_value_bool_get(value, &bool_val); + status = bt_value_bool_get(value, &bool_val); + if (status != BT_VALUE_STATUS_OK) { + goto error; + } fprintf(fp, "%s%s%s%s\n", bt_common_color_bold(), bt_common_color_fg_cyan(), bool_val ? "yes" : "no", bt_common_color_reset()); break; case BT_VALUE_TYPE_INTEGER: - bt_value_integer_get(value, &int_val); + status = bt_value_integer_get(value, &int_val); + if (status != BT_VALUE_STATUS_OK) { + goto error; + } fprintf(fp, "%s%s%" PRId64 "%s\n", bt_common_color_bold(), bt_common_color_fg_red(), int_val, bt_common_color_reset()); break; case BT_VALUE_TYPE_FLOAT: - bt_value_float_get(value, &dbl_val); + status = bt_value_float_get(value, &dbl_val); + if (status != BT_VALUE_STATUS_OK) { + goto error; + } fprintf(fp, "%s%s%lf%s\n", bt_common_color_bold(), bt_common_color_fg_red(), dbl_val, bt_common_color_reset()); break; case BT_VALUE_TYPE_STRING: - bt_value_string_get(value, &str_val); + status = bt_value_string_get(value, &str_val); + if (status != BT_VALUE_STATUS_OK) { + goto error; + } fprintf(fp, "%s%s%s%s\n", bt_common_color_bold(), bt_common_color_fg_green(), str_val, bt_common_color_reset()); break; case BT_VALUE_TYPE_ARRAY: size = bt_value_array_size(value); - assert(size >= 0); + if (size < 0) { + goto error; + } if (size == 0) { print_indent(fp, indent); @@ -342,7 +358,9 @@ void print_value_rec(FILE *fp, struct bt_value *value, size_t indent) struct bt_value *element = bt_value_array_get(value, i); - assert(element); + if (!element) { + goto error; + } print_indent(fp, indent); fprintf(fp, "- "); @@ -386,6 +404,11 @@ void print_value_rec(FILE *fp, struct bt_value *value, size_t indent) default: abort(); } + return; + +error: + BT_LOGE("Error printing value of type %s.", + bt_value_type_string(bt_value_get_type(value))); } static -- 2.34.1