diff --git a/examples/c-form/ex7.bpf.c b/examples/c-form/ex7.bpf.c new file mode 100644 index 0000000..016e31d --- /dev/null +++ b/examples/c-form/ex7.bpf.c @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include + + +struct event { + __u32 pid; + __u32 uid; + __u64 ts; +}; + +struct { + __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY); + __uint(key_size, sizeof(int)); + __uint(value_size, sizeof(int)); +} events SEC(".maps"); + +SEC("tp/syscalls/sys_enter_setuid") +int handle_setuid_entry(struct trace_event_raw_sys_enter *ctx) +{ + struct event data = {}; + + // Extract UID from the syscall arguments + data.uid = (unsigned int)ctx->args[0]; + data.ts = bpf_ktime_get_ns(); + data.pid = bpf_get_current_pid_tgid() >> 32; + + bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, &data, sizeof(data)); + + return 0; +} + +char LICENSE[] SEC("license") = "GPL";