Fix: unchecked return values of bt_value getters
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 3 Aug 2017 13:59:20 +0000 (09:59 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 9 Aug 2017 21:31:36 +0000 (17:31 -0400)
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 <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
cli/babeltrace.c

index 540bd11dd7500d6bbf4a09dde3713fde9a44dfdf..6920aabc6e697a2c07e03071ac4971e658afea60 100644 (file)
@@ -43,6 +43,7 @@
 #include <babeltrace/graph/notification-iterator.h>
 #include <babeltrace/ref.h>
 #include <babeltrace/values.h>
+#include <babeltrace/values-internal.h>
 #include <babeltrace/logging.h>
 #include <unistd.h>
 #include <stdlib.h>
@@ -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
This page took 0.027373 seconds and 4 git commands to generate.