diff options
author | rwatson <rwatson@FreeBSD.org> | 2003-11-16 03:53:36 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2003-11-16 03:53:36 +0000 |
commit | 0dca1bb7dd2daf9f26f30730cbfaafe9b77bbeb0 (patch) | |
tree | 28beea421dfec5b31739ef4c45057164bb7f4a11 /sys/kern/uipc_socket.c | |
parent | 09b9eba3c3d57797e01c47c2ce0fdc128e06bd36 (diff) | |
download | FreeBSD-src-0dca1bb7dd2daf9f26f30730cbfaafe9b77bbeb0.zip FreeBSD-src-0dca1bb7dd2daf9f26f30730cbfaafe9b77bbeb0.tar.gz |
When implementing getsockopt() for SO_LABEL and SO_PEERLABEL, make
sure to sooptcopyin() the (struct mac) so that the MAC Framework
knows which label types are being requested. This fixes process
queries of socket labels.
Obtained from: TrustedBSD Project
Sponsored by: DARPA, Network Associates Laboratories
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r-- | sys/kern/uipc_socket.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 8e5dec2..84db1a9 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1599,6 +1599,10 @@ integer: break; case SO_LABEL: #ifdef MAC + error = sooptcopyin(sopt, &extmac, sizeof(extmac), + sizeof(extmac)); + if (error) + return (error); error = mac_getsockopt_label_get( sopt->sopt_td->td_ucred, so, &extmac); if (error) @@ -1610,6 +1614,10 @@ integer: break; case SO_PEERLABEL: #ifdef MAC + error = sooptcopyin(sopt, &extmac, sizeof(extmac), + sizeof(extmac)); + if (error) + return (error); error = mac_getsockopt_peerlabel_get( sopt->sopt_td->td_ucred, so, &extmac); if (error) |