struct aa_profile *profile;
DEFINE_AUDIT_SK(ad, op, subj_cred, sk);
- ad.net.addr = peer_addr;
- ad.net.addrlen = peer_addrlen;
+ ad.net.peer.addr = peer_addr;
+ ad.net.peer.addrlen = peer_addrlen;
return fn_for_each_confined(label, profile,
profile_peer_perm(profile, request, sk,
{
const struct unix_sock *u = unix_sk(sk);
- if (u && u->addr)
- audit_unix_addr(ab, str, u->addr->name, u->addr->len);
- else
+ if (u && u->addr) {
+ int addrlen;
+ struct sockaddr_un *addr = aa_sunaddr(u, &addrlen);
+
+ audit_unix_addr(ab, str, addr, addrlen);
+ } else {
audit_unix_addr(ab, str, NULL, 0);
+
+ }
}
/* audit callback for net specific fields */
}
}
if (ad->common.u.net->family == PF_UNIX) {
- if ((ad->request & ~NET_PEER_MASK) && ad->net.addr)
+ if (ad->net.addr || !ad->common.u.net->sk)
audit_unix_addr(ab, "addr",
unix_addr(ad->net.addr),
ad->net.addrlen);
else
audit_unix_sk_addr(ab, "addr", ad->common.u.net->sk);
if (ad->request & NET_PEER_MASK) {
- if (ad->net.addr)
- audit_unix_addr(ab, "peer_addr",
- unix_addr(ad->net.addr),
- ad->net.addrlen);
+ audit_unix_addr(ab, "peer_addr",
+ unix_addr(ad->net.peer.addr),
+ ad->net.peer.addrlen);
}
}
if (ad->peer) {