Issue
=====
Omitting to pass the mandatory `path` parameter to the `metadata-info`
query results in a BT_ASSERT() failure when calling
bt_value_get_string(), or a NULL pointer dereference in non-DEV_MODE.
Similarly, setting the `path` to a non-string value would also result in
a BT_ASSERT() failure, or a invalid memory access in non-DEV_MODE
Solution
========
Confirm that the `path` parameter is present and is of the string type and
print error messages accordingly it's not.
Known drawbacks
===============
None.
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: I8182de2797c375262d77a4a8961bedb4c5ef9578
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1081
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
}
path_value = bt_value_map_borrow_entry_value_const(params, "path");
}
path_value = bt_value_map_borrow_entry_value_const(params, "path");
+ if (!path_value) {
+ BT_LOGE_STR("Mandatory `path` parameter missing");
+ status = BT_QUERY_STATUS_INVALID_PARAMS;
+ goto error;
+ }
+
+ if (!bt_value_is_string(path_value)) {
+ BT_LOGE_STR("`path` parameter is required to be a string value");
+ status = BT_QUERY_STATUS_INVALID_PARAMS;
+ goto error;
+ }
+
path = bt_value_string_get(path_value);
BT_ASSERT(path);
path = bt_value_string_get(path_value);
BT_ASSERT(path);