diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2007-01-22 16:00:45 -0500 |
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2007-01-22 16:00:45 -0500 |
| commit | 847641d7db15ac3f18b3d4aa05479812abdf397a (patch) | |
| tree | 59c7f5f3fc3b6a06912487222cd1dbb4214825c4 | |
| parent | 7386397636d49cd5f03da29432467d3e98cbad35 (diff) | |
[Bluetooth] Restrict well known PSM to privileged users
The PSM values below 0x1001 of L2CAP are reserved for well known
services. Restrict the possibility to bind them to privileged
users.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| -rw-r--r-- | net/bluetooth/l2cap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index be5a6e60a3c4..f8c25d500155 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
| @@ -585,6 +585,12 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_ | |||
| 585 | goto done; | 585 | goto done; |
| 586 | } | 586 | } |
| 587 | 587 | ||
| 588 | if (la->l2_psm > 0 && btohs(la->l2_psm) < 0x1001 && | ||
| 589 | !capable(CAP_NET_BIND_SERVICE)) { | ||
| 590 | err = -EACCES; | ||
| 591 | goto done; | ||
| 592 | } | ||
| 593 | |||
| 588 | write_lock_bh(&l2cap_sk_list.lock); | 594 | write_lock_bh(&l2cap_sk_list.lock); |
| 589 | 595 | ||
| 590 | if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) { | 596 | if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) { |
