diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2025-01-20 13:50:04 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2025-01-29 17:26:14 +0000 |
| commit | 10f8a9df522f9a5e5fb9a3a97d1d76949fe4ebc3 (patch) | |
| tree | 04be9c3b36b79a58d3925926068129c4e75fb7b9 | |
| parent | c8918d6c7412fce87922e9bd7e4f5c7d7ca96eb7 (diff) | |
| -rw-r--r-- | sys/kern/kern_ktrace.c | 11 |
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; |
