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
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;
|