Coverity warns that `lttng_action_get_type()` can return
a negative index (LTTNG_ACTION_TYPE_UNKNOWN). This scenario
is not reachable, but a check is added to silence the analyzer.
Original report:
1435955 Negative array index read
A memory location at a negative offset from the beginning of the array
will be read, resulting in incorrect values.
In get_action_name: Negative value used to index an array in a read
operation (CWE-129)
Reported-by: Coverity Scan
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I5952096a1d29f0d4a3c4350a2a842874d5f3973b
static const char *get_action_name(const struct lttng_action *action)
{
static const char *get_action_name(const struct lttng_action *action)
{
- return action_type_names[lttng_action_get_type(action)];
+ const enum lttng_action_type action_type = lttng_action_get_type(action);
+
+ assert(action_type != LTTNG_ACTION_TYPE_UNKNOWN);
+
+ return action_type_names[action_type];
}
/* Check if this trigger allowed to interect with a given session. */
}
/* Check if this trigger allowed to interect with a given session. */
const struct action_work_item *work_item,
const struct lttng_action *action)
{
const struct action_work_item *work_item,
const struct lttng_action *action)
{
+ const enum lttng_action_type action_type = lttng_action_get_type(action);
+
+ assert(action_type != LTTNG_ACTION_TYPE_UNKNOWN);
+
DBG("Executing action `%s` of trigger `%p` action work item %" PRIu64,
get_action_name(action),
work_item->trigger,
work_item->id);
DBG("Executing action `%s` of trigger `%p` action work item %" PRIu64,
get_action_name(action),
work_item->trigger,
work_item->id);
- return action_executors[lttng_action_get_type(action)](
+ return action_executors[action_type](
executor, work_item, action);
}
executor, work_item, action);
}