You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB

Bug: https://bugs.gentoo.org/926768
Minimal subset of changes from: https://github.com/falcosecurity/libs/pull/1632
--- a/driver/ppm_events.c 2024-03-11 15:19:23.000000000 +0100
+++ b/driver/ppm_events.c 2024-03-11 15:22:48.230598879 +0100
@@ -624,12 +624,16 @@ int val_to_ring(struct event_filler_argu
if (unlikely(len < 0))
return PPM_FAILURE_INVALID_USER_MEMORY;
} else {
- len = (int)strlcpy(args->buffer + args->arg_data_offset,
+ len = (int)strscpy(args->buffer + args->arg_data_offset,
(const char *)(syscall_arg_t)val,
max_arg_size);
- if (++len > (int)max_arg_size)
+ if (len == -E2BIG) {
len = max_arg_size;
+ } else {
+ len++;
+ }
+
}
/*
@@ -640,12 +644,15 @@ int val_to_ring(struct event_filler_argu
/*
* Handle NULL pointers
*/
- len = (int)strlcpy(args->buffer + args->arg_data_offset,
+ len = (int)strscpy(args->buffer + args->arg_data_offset,
"(NULL)",
max_arg_size);
- if (++len > (int)max_arg_size)
- len = max_arg_size;
+ if (len == -E2BIG) {
+ len = max_arg_size;
+ } else {
+ len++;
+ }
}
break;