summaryrefslogtreecommitdiffstats
path: root/sys/security/audit/audit_arg.c
diff options
context:
space:
mode:
authorcsjp <csjp@FreeBSD.org>2006-11-06 00:15:44 +0000
committercsjp <csjp@FreeBSD.org>2006-11-06 00:15:44 +0000
commitcf1f0416d18ae97bc26c9a2e69019b70e64119b9 (patch)
tree7aadb5117815599abe35731c6ac79fcbb42c09f2 /sys/security/audit/audit_arg.c
parent9ef7e5e3afc0c9daef60848d3b4b44df597298c1 (diff)
downloadFreeBSD-src-cf1f0416d18ae97bc26c9a2e69019b70e64119b9.zip
FreeBSD-src-cf1f0416d18ae97bc26c9a2e69019b70e64119b9.tar.gz
Change the type of ar_arg_sockaddr from struct sockaddr to struct
sockaddr_storage. This structure is defined in RFC 2553 and is a more semantically correct structure for holding IP and IP6 sockaddr information. struct sockaddr is not big enough to hold all the required information for IP6, resulting in truncated addresses et al when auditing IP6 sockaddr information. We also need to assume that the sa->sa_len has been validated before the call to audit_arg_sockaddr() is made, otherwise it could result in a buffer overflow. This is being done to accommodate auditing of network related arguments (like connect, bind et al) that will be added soon. Discussed with: rwatson Obtained from: TrustedBSD Project MFC after: 2 weeks
Diffstat (limited to 'sys/security/audit/audit_arg.c')
-rw-r--r--sys/security/audit/audit_arg.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/security/audit/audit_arg.c b/sys/security/audit/audit_arg.c
index ea569f7..76aeb4d 100644
--- a/sys/security/audit/audit_arg.c
+++ b/sys/security/audit/audit_arg.c
@@ -417,8 +417,7 @@ audit_arg_sockaddr(struct thread *td, struct sockaddr *sa)
if (ar == NULL)
return;
- bcopy(sa, &ar->k_ar.ar_arg_sockaddr,
- sizeof(ar->k_ar.ar_arg_sockaddr));
+ bcopy(sa, &ar->k_ar.ar_arg_sockaddr, sa->sa_len);
switch (sa->sa_family) {
case AF_INET:
ARG_SET_VALID(ar, ARG_SADDRINET);
OpenPOWER on IntegriCloud