Function report |
Source Code:security\selinux\hooks.c |
Create Date:2022-07-28 18:59:52 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Range of port numbers used to automatically bind.Need to determine whether we should perform a name_bindpermission check between the socket and the port number.
Proto:static int selinux_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen)
Type:int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct socket * | sock | |
| struct sockaddr * | address | |
| int | addrlen |
| 4579 | sksec = sk_security |
| 4583 | err = sock_has_perm(sk, SOCKET__BIND) |
| 4592 | struct lsm_network_audit net = {0, } |
| 4593 | struct sockaddr_in * addr4 = NULL |
| 4594 | struct sockaddr_in6 * addr6 = NULL |
| 4605 | If addrlen < get the member end offset of(structsockaddr, sa_family) Then Return -EINVAL |
| 4607 | family_sa = address family, AF_xxx |
| 4609 | Case family_sa == Supported address families. |
| 4610 | Case family_sa == Internet IP Protocol |
| 4611 | If addrlen < sizeof(structsockaddr_in) Then Return -EINVAL |
| 4614 | If family_sa == Supported address families. Then |
| 4618 | If s_addr != htonl(Address to accept any incoming messages. ) Then Go to err_af |
| 4620 | family_sa = Internet IP Protocol |
| 4622 | snum = ntohs( Port number ) |
| 4624 | Break |
| 4625 | Case family_sa == IP version 6 |
| 4626 | If addrlen < SIN6_LEN_RFC2133 Then Return -EINVAL |
| 4629 | snum = ntohs( Transport layer port # ) |
| 4631 | Break |
| 4632 | Default |
| 4633 | Go to err_af |
| 4636 | type = LSM_AUDIT_DATA_NET |
| 4641 | If snum Then |
| 4644 | inet_get_local_port_range(sock_net(sk), & low, & high) |
| 4648 | err = sel_netport_sid(sk_protocol, snum, & sid) |
| 4662 | Case sock security class == SECCLASS_TCP_SOCKET |
| 4663 | node_perm = TCP_SOCKET__NODE_BIND |
| 4664 | Break |
| 4666 | Case sock security class == SECCLASS_UDP_SOCKET |
| 4667 | node_perm = UDP_SOCKET__NODE_BIND |
| 4668 | Break |
| 4670 | Case sock security class == SECCLASS_DCCP_SOCKET |
| 4671 | node_perm = DCCP_SOCKET__NODE_BIND |
| 4672 | Break |
| 4674 | Case sock security class == SECCLASS_SCTP_SOCKET |
| 4675 | node_perm = SCTP_SOCKET__NODE_BIND |
| 4676 | Break |
| 4678 | Default |
| 4679 | node_perm = RAWIP_SOCKET__NODE_BIND |
| 4680 | Break |
| 4683 | err = sel_netnode_sid(addrp, family_sa, & sid) |
| 4687 | If family_sa == Internet IP Protocol Then saddr = s_addr |
| 4689 | Else saddr = IPv6 address |
| 4698 | out : |
| 4699 | Return err |
| 4700 | err_af : |
| 4702 | If sock security class == SECCLASS_SCTP_SOCKET Then Return -EINVAL |
| 4704 | Return -EAFNOSUPPORT |
| Name | Describe |
|---|---|
| selinux_sctp_bind_connect | Check if sctp IPv4/IPv6 addresses are valid for binding or connecting* based on their @optname. |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |