Fix: src.ctf.fs: metadata-info: sanitize `path` param
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Tue, 30 Apr 2019 17:51:03 +0000 (13:51 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 3 May 2019 22:19:40 +0000 (18:19 -0400)
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>
plugins/ctf/fs-src/query.c

index 0235cf6bccf40a983d29b06bf62b79186c9f670a..c185307caa3f6b2ef8d1dcd90b0704ec81876117 100644 (file)
@@ -77,6 +77,18 @@ bt_query_status metadata_info_query(
        }
 
        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);
This page took 0.024665 seconds and 4 git commands to generate.