ssize_t sock_recv_len;
struct lttng_trigger *trigger = NULL;
struct lttng_payload trigger_payload;
+ struct lttng_credentials cmd_creds = {
+ .uid = cmd_ctx->creds.uid,
+ .gid = cmd_ctx->creds.gid,
+ };
lttng_payload_init(&trigger_payload);
trigger_len = (size_t) cmd_ctx->lsm.u.trigger.length;
goto end;
}
+ /* Receive fds, if any. */
+ if (cmd_ctx->lsm.fd_count > 0) {
+ ret = lttcomm_recv_payload_fds_unix_sock(
+ sock, cmd_ctx->lsm.fd_count, &trigger_payload);
+ if (ret > 0 && ret != cmd_ctx->lsm.fd_count * sizeof(int)) {
+ ret = LTTNG_ERR_INVALID_PROTOCOL;
+ goto end;
+ } else if (ret <= 0) {
+ ret = LTTNG_ERR_FATAL;
+ goto end;
+ }
+ }
+
+ /* Deserialize trigger. */
{
struct lttng_payload_view view =
lttng_payload_view_from_payload(
}
}
+ /* Set the trigger credential */
+ lttng_trigger_set_credentials(trigger, &cmd_creds);
+
+ /* Inform the notification thread */
ret = notification_thread_command_register_trigger(notification_thread,
trigger);
/* Ownership of trigger was transferred. */
ssize_t sock_recv_len;
struct lttng_trigger *trigger = NULL;
struct lttng_payload trigger_payload;
+ struct lttng_credentials cmd_creds = {
+ .uid = cmd_ctx->creds.uid,
+ .gid = cmd_ctx->creds.gid,
+ };
lttng_payload_init(&trigger_payload);
trigger_len = (size_t) cmd_ctx->lsm.u.trigger.length;
goto end;
}
+ /* Receive fds, if any. */
+ if (cmd_ctx->lsm.fd_count > 0) {
+ ret = lttcomm_recv_payload_fds_unix_sock(
+ sock, cmd_ctx->lsm.fd_count, &trigger_payload);
+ if (ret > 0 && ret != cmd_ctx->lsm.fd_count * sizeof(int)) {
+ ret = LTTNG_ERR_INVALID_PROTOCOL;
+ goto end;
+ } else if (ret <= 0) {
+ ret = LTTNG_ERR_FATAL;
+ goto end;
+ }
+ }
+
{
struct lttng_payload_view view =
lttng_payload_view_from_payload(
}
}
+ lttng_trigger_set_credentials(trigger, &cmd_creds);
+
ret = notification_thread_command_unregister_trigger(notification_thread,
trigger);
end: