aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2025-01-20 13:50:04 +0000
committerMark Johnston <markj@FreeBSD.org>2025-01-29 17:26:14 +0000
commit10f8a9df522f9a5e5fb9a3a97d1d76949fe4ebc3 (patch)
tree04be9c3b36b79a58d3925926068129c4e75fb7b9
parentc8918d6c7412fce87922e9bd7e4f5c7d7ca96eb7 (diff)
-rw-r--r--sys/kern/kern_ktrace.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c
index 1c6a2ae01f3d..2b311f2d36dc 100644
--- a/sys/kern/kern_ktrace.c
+++ b/sys/kern/kern_ktrace.c
@@ -958,9 +958,16 @@ ktrcapfail(enum ktr_cap_violation type, const void *data)
case CAPFAIL_PROTO:
kcd->cap_int = *(const int *)data;
break;
- case CAPFAIL_SOCKADDR:
- kcd->cap_sockaddr = *(const struct sockaddr *)data;
+ case CAPFAIL_SOCKADDR: {
+ size_t len;
+
+ len = MIN(((const struct sockaddr *)data)->sa_len,
+ sizeof(kcd->cap_sockaddr));
+ memset(&kcd->cap_sockaddr, 0,
+ sizeof(kcd->cap_sockaddr));
+ memcpy(&kcd->cap_sockaddr, data, len);
break;
+ }
case CAPFAIL_NAMEI:
strlcpy(kcd->cap_path, data, MAXPATHLEN);
break;