#include <assert.h>
#include <common/dynamic-array.h>
-#include <common/sessiond-comm/payload.h>
-#include <common/sessiond-comm/payload-view.h>
+#include <common/payload.h>
+#include <common/payload-view.h>
#include <common/error.h>
#include <common/macros.h>
#include <lttng/action/action-internal.h>
#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) {
enum lttng_action_status status;
int ret;
- if (!group || !IS_GROUP_ACTION(action) || !action) {
+ if (!group || !IS_GROUP_ACTION(group) || !action) {
status = LTTNG_ACTION_STATUS_INVALID;
goto end;
}
end:
return action;
}
+
+struct lttng_action *lttng_action_group_get_mutable_at_index(
+ struct lttng_action *group,
+ unsigned int index)
+{
+ return (struct lttng_action *) lttng_action_group_get_at_index(
+ (const struct lttng_action *) group, index);
+}