hooks.c (9a673e563e543a5c8a6f9824562e55e807b8a56c) hooks.c (99f59ed073d3c1b890690064ab285a201dea2e35)
1/*
2 * NSA Security-Enhanced Linux (SELinux) security module
3 *
4 * This file contains the SELinux hook function implementations.
5 *
6 * Authors: Stephen Smalley, <sds@epoch.ncsc.mil>
7 * Chris Vance, <cvance@nai.com>
8 * Wayne Salamon, <wsalamon@nai.com>

--- 267 unchanged lines hidden (view full) ---

276 if (!ssec)
277 return -ENOMEM;
278
279 ssec->sk = sk;
280 ssec->peer_sid = SECINITSID_UNLABELED;
281 ssec->sid = SECINITSID_UNLABELED;
282 sk->sk_security = ssec;
283
1/*
2 * NSA Security-Enhanced Linux (SELinux) security module
3 *
4 * This file contains the SELinux hook function implementations.
5 *
6 * Authors: Stephen Smalley, <sds@epoch.ncsc.mil>
7 * Chris Vance, <cvance@nai.com>
8 * Wayne Salamon, <wsalamon@nai.com>

--- 267 unchanged lines hidden (view full) ---

276 if (!ssec)
277 return -ENOMEM;
278
279 ssec->sk = sk;
280 ssec->peer_sid = SECINITSID_UNLABELED;
281 ssec->sid = SECINITSID_UNLABELED;
282 sk->sk_security = ssec;
283
284 selinux_netlbl_sk_security_init(ssec, family);
285
284 return 0;
285}
286
287static void sk_free_security(struct sock *sk)
288{
289 struct sk_security_struct *ssec = sk->sk_security;
290
291 sk->sk_security = NULL;

--- 3288 unchanged lines hidden (view full) ---

3580
3581static void selinux_sk_clone_security(const struct sock *sk, struct sock *newsk)
3582{
3583 struct sk_security_struct *ssec = sk->sk_security;
3584 struct sk_security_struct *newssec = newsk->sk_security;
3585
3586 newssec->sid = ssec->sid;
3587 newssec->peer_sid = ssec->peer_sid;
286 return 0;
287}
288
289static void sk_free_security(struct sock *sk)
290{
291 struct sk_security_struct *ssec = sk->sk_security;
292
293 sk->sk_security = NULL;

--- 3288 unchanged lines hidden (view full) ---

3582
3583static void selinux_sk_clone_security(const struct sock *sk, struct sock *newsk)
3584{
3585 struct sk_security_struct *ssec = sk->sk_security;
3586 struct sk_security_struct *newssec = newsk->sk_security;
3587
3588 newssec->sid = ssec->sid;
3589 newssec->peer_sid = ssec->peer_sid;
3590
3591 selinux_netlbl_sk_clone_security(ssec, newssec);
3588}
3589
3590static void selinux_sk_getsecid(struct sock *sk, u32 *secid)
3591{
3592 if (!sk)
3593 *secid = SECINITSID_ANY_SOCKET;
3594 else {
3595 struct sk_security_struct *sksec = sk->sk_security;

--- 47 unchanged lines hidden (view full) ---

3643{
3644 struct sk_security_struct *newsksec = newsk->sk_security;
3645
3646 newsksec->sid = req->secid;
3647 /* NOTE: Ideally, we should also get the isec->sid for the
3648 new socket in sync, but we don't have the isec available yet.
3649 So we will wait until sock_graft to do it, by which
3650 time it will have been created and available. */
3592}
3593
3594static void selinux_sk_getsecid(struct sock *sk, u32 *secid)
3595{
3596 if (!sk)
3597 *secid = SECINITSID_ANY_SOCKET;
3598 else {
3599 struct sk_security_struct *sksec = sk->sk_security;

--- 47 unchanged lines hidden (view full) ---

3647{
3648 struct sk_security_struct *newsksec = newsk->sk_security;
3649
3650 newsksec->sid = req->secid;
3651 /* NOTE: Ideally, we should also get the isec->sid for the
3652 new socket in sync, but we don't have the isec available yet.
3653 So we will wait until sock_graft to do it, by which
3654 time it will have been created and available. */
3655
3656 selinux_netlbl_sk_security_init(newsksec, req->rsk_ops->family);
3651}
3652
3653static void selinux_req_classify_flow(const struct request_sock *req,
3654 struct flowi *fl)
3655{
3656 fl->secid = req->secid;
3657}
3658

--- 1263 unchanged lines hidden ---
3657}
3658
3659static void selinux_req_classify_flow(const struct request_sock *req,
3660 struct flowi *fl)
3661{
3662 fl->secid = req->secid;
3663}
3664

--- 1263 unchanged lines hidden ---