Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 285039
b: refs/heads/master
c: fd77846
h: refs/heads/master
i:
  285037: aeb8612
  285035: d0eac58
  285031: 623200e
  285023: f797c2f
v: v3
  • Loading branch information
Eric Paris committed Jan 5, 2012
1 parent 3c1aeff commit 0811253
Show file tree
Hide file tree
Showing 15 changed files with 11 additions and 59 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 69f594a38967f4540ce7a29b3fd214e68a8330bd
refs/heads/master: fd778461524849afd035679030ae8e8873c72b81
2 changes: 1 addition & 1 deletion trunk/drivers/scsi/scsi_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ scsi_nl_rcv_msg(struct sk_buff *skb)
goto next_msg;
}

if (security_netlink_recv(skb, CAP_SYS_ADMIN)) {
if (!capable(CAP_SYS_ADMIN)) {
err = -EPERM;
goto next_msg;
}
Expand Down
14 changes: 0 additions & 14 deletions trunk/include/linux/security.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ struct xfrm_user_sec_ctx;
struct seq_file;

extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
extern int cap_netlink_recv(struct sk_buff *skb, int cap);

void reset_security_ops(void);

Expand Down Expand Up @@ -792,12 +791,6 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
* @skb contains the sk_buff structure for the netlink message.
* Return 0 if the information was successfully saved and message
* is allowed to be transmitted.
* @netlink_recv:
* Check permission before processing the received netlink message in
* @skb.
* @skb contains the sk_buff structure for the netlink message.
* @cap indicates the capability required
* Return 0 if permission is granted.
*
* Security hooks for Unix domain networking.
*
Expand Down Expand Up @@ -1556,7 +1549,6 @@ struct security_operations {
struct sembuf *sops, unsigned nsops, int alter);

int (*netlink_send) (struct sock *sk, struct sk_buff *skb);
int (*netlink_recv) (struct sk_buff *skb, int cap);

void (*d_instantiate) (struct dentry *dentry, struct inode *inode);

Expand Down Expand Up @@ -1803,7 +1795,6 @@ void security_d_instantiate(struct dentry *dentry, struct inode *inode);
int security_getprocattr(struct task_struct *p, char *name, char **value);
int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size);
int security_netlink_send(struct sock *sk, struct sk_buff *skb);
int security_netlink_recv(struct sk_buff *skb, int cap);
int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen);
int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid);
void security_release_secctx(char *secdata, u32 seclen);
Expand Down Expand Up @@ -2478,11 +2469,6 @@ static inline int security_netlink_send(struct sock *sk, struct sk_buff *skb)
return cap_netlink_send(sk, skb);
}

static inline int security_netlink_recv(struct sk_buff *skb, int cap)
{
return cap_netlink_recv(skb, cap);
}

static inline int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
{
return -EOPNOTSUPP;
Expand Down
4 changes: 2 additions & 2 deletions trunk/kernel/audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -601,13 +601,13 @@ static int audit_netlink_ok(struct sk_buff *skb, u16 msg_type)
case AUDIT_TTY_SET:
case AUDIT_TRIM:
case AUDIT_MAKE_EQUIV:
if (security_netlink_recv(skb, CAP_AUDIT_CONTROL))
if (!capable(CAP_AUDIT_CONTROL))
err = -EPERM;
break;
case AUDIT_USER:
case AUDIT_FIRST_USER_MSG ... AUDIT_LAST_USER_MSG:
case AUDIT_FIRST_USER_MSG2 ... AUDIT_LAST_USER_MSG2:
if (security_netlink_recv(skb, CAP_AUDIT_WRITE))
if (!capable(CAP_AUDIT_WRITE))
err = -EPERM;
break;
default: /* bad msg */
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/core/rtnetlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -1931,7 +1931,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
sz_idx = type>>2;
kind = type&3;

if (kind != 2 && security_netlink_recv(skb, CAP_NET_ADMIN))
if (kind != 2 && !capable(CAP_NET_ADMIN))
return -EPERM;

if (kind == 2 && nlh->nlmsg_flags&NLM_F_DUMP) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/decnet/netfilter/dn_rtmsg.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ static inline void dnrmg_receive_user_skb(struct sk_buff *skb)
if (nlh->nlmsg_len < sizeof(*nlh) || skb->len < nlh->nlmsg_len)
return;

if (security_netlink_recv(skb, CAP_NET_ADMIN))
if (!capable(CAP_NET_ADMIN))
RCV_SKB_FAIL(-EPERM);

/* Eventually we might send routing messages too */
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/ipv4/netfilter/ip_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ __ipq_rcv_skb(struct sk_buff *skb)
if (type <= IPQM_BASE)
return;

if (security_netlink_recv(skb, CAP_NET_ADMIN))
if (!capable(CAP_NET_ADMIN))
RCV_SKB_FAIL(-EPERM);

spin_lock_bh(&queue_lock);
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/ipv6/netfilter/ip6_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ __ipq_rcv_skb(struct sk_buff *skb)
if (type <= IPQM_BASE)
return;

if (security_netlink_recv(skb, CAP_NET_ADMIN))
if (!capable(CAP_NET_ADMIN))
RCV_SKB_FAIL(-EPERM);

spin_lock_bh(&queue_lock);
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/netfilter/nfnetlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ static int nfnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
const struct nfnetlink_subsystem *ss;
int type, err;

if (security_netlink_recv(skb, CAP_NET_ADMIN))
if (!capable(CAP_NET_ADMIN))
return -EPERM;

/* All the messages must at least contain nfgenmsg */
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/netlink/genetlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ static int genl_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
return -EOPNOTSUPP;

if ((ops->flags & GENL_ADMIN_PERM) &&
security_netlink_recv(skb, CAP_NET_ADMIN))
!capable(CAP_NET_ADMIN))
return -EPERM;

if (nlh->nlmsg_flags & NLM_F_DUMP) {
Expand Down
2 changes: 1 addition & 1 deletion trunk/net/xfrm/xfrm_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -2290,7 +2290,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
link = &xfrm_dispatch[type];

/* All operations require privileges, even GET */
if (security_netlink_recv(skb, CAP_NET_ADMIN))
if (!capable(CAP_NET_ADMIN))
return -EPERM;

if ((type == (XFRM_MSG_GETSA - XFRM_MSG_BASE) ||
Expand Down
1 change: 0 additions & 1 deletion trunk/security/capability.c
Original file line number Diff line number Diff line change
Expand Up @@ -999,7 +999,6 @@ void __init security_fixup_ops(struct security_operations *ops)
set_to_cap_if_null(ops, sem_semctl);
set_to_cap_if_null(ops, sem_semop);
set_to_cap_if_null(ops, netlink_send);
set_to_cap_if_null(ops, netlink_recv);
set_to_cap_if_null(ops, d_instantiate);
set_to_cap_if_null(ops, getprocattr);
set_to_cap_if_null(ops, setprocattr);
Expand Down
8 changes: 0 additions & 8 deletions trunk/security/commoncap.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,6 @@ int cap_netlink_send(struct sock *sk, struct sk_buff *skb)
return 0;
}

int cap_netlink_recv(struct sk_buff *skb, int cap)
{
if (!cap_raised(current_cap(), cap))
return -EPERM;
return 0;
}
EXPORT_SYMBOL(cap_netlink_recv);

/**
* cap_capable - Determine whether a task has a particular effective capability
* @cred: The credentials to use
Expand Down
6 changes: 0 additions & 6 deletions trunk/security/security.c
Original file line number Diff line number Diff line change
Expand Up @@ -922,12 +922,6 @@ int security_netlink_send(struct sock *sk, struct sk_buff *skb)
return security_ops->netlink_send(sk, skb);
}

int security_netlink_recv(struct sk_buff *skb, int cap)
{
return security_ops->netlink_recv(skb, cap);
}
EXPORT_SYMBOL(security_netlink_recv);

int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
{
return security_ops->secid_to_secctx(secid, secdata, seclen);
Expand Down
19 changes: 0 additions & 19 deletions trunk/security/selinux/hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -4713,24 +4713,6 @@ static int selinux_netlink_send(struct sock *sk, struct sk_buff *skb)
return selinux_nlmsg_perm(sk, skb);
}

static int selinux_netlink_recv(struct sk_buff *skb, int capability)
{
int err;
struct common_audit_data ad;
u32 sid;

err = cap_netlink_recv(skb, capability);
if (err)
return err;

COMMON_AUDIT_DATA_INIT(&ad, CAP);
ad.u.cap = capability;

security_task_getsecid(current, &sid);
return avc_has_perm(sid, sid, SECCLASS_CAPABILITY,
CAP_TO_MASK(capability), &ad);
}

static int ipc_alloc_security(struct task_struct *task,
struct kern_ipc_perm *perm,
u16 sclass)
Expand Down Expand Up @@ -5459,7 +5441,6 @@ static struct security_operations selinux_ops = {
.vm_enough_memory = selinux_vm_enough_memory,

.netlink_send = selinux_netlink_send,
.netlink_recv = selinux_netlink_recv,

.bprm_set_creds = selinux_bprm_set_creds,
.bprm_committing_creds = selinux_bprm_committing_creds,
Expand Down

0 comments on commit 0811253

Please sign in to comment.