#include <lttng/action/group.h>
#define IS_GROUP_ACTION(action) \
- (lttng_action_get_type_const(action) == LTTNG_ACTION_TYPE_GROUP)
+ (lttng_action_get_type(action) == LTTNG_ACTION_TYPE_GROUP)
struct lttng_action_group {
struct lttng_action parent;
lttng_payload_view_from_view(view, consumed_len,
view->buffer.size - consumed_len);
+ if (!lttng_payload_view_is_valid(&child_view)) {
+ consumed_len = -1;
+ goto end;
+ }
+
consumed_len_child = lttng_action_create_from_payload(
&child_view, &child_action);
if (consumed_len_child < 0) {
lttng_action_init(action, LTTNG_ACTION_TYPE_GROUP,
lttng_action_group_validate,
lttng_action_group_serialize,
- lttng_action_group_is_equal,
- lttng_action_group_destroy);
+ lttng_action_group_is_equal, lttng_action_group_destroy,
+ NULL);
lttng_dynamic_pointer_array_init(&action_group->actions,
destroy_lttng_action_group_element);
const struct lttng_action *lttng_action_group_get_at_index(
const struct lttng_action *group, unsigned int index)
+{
+ return lttng_action_group_borrow_mutable_at_index(group, index);
+}
+
+LTTNG_HIDDEN
+struct lttng_action *lttng_action_group_borrow_mutable_at_index(
+ const struct lttng_action *group, unsigned int index)
{
unsigned int count;
const struct lttng_action_group *action_group;
- const struct lttng_action * action = NULL;
+ struct lttng_action *action = NULL;
if (lttng_action_group_get_count(group, &count) !=
LTTNG_ACTION_STATUS_OK) {