mirror of https://gitee.com/openkylin/linux.git
f88b4c01b9
netlbl_unlabel_addrinfo_get() assumes that if it finds the
NLBL_UNLABEL_A_IPV4ADDR attribute, it must also have the
NLBL_UNLABEL_A_IPV4MASK attribute as well. However, this is
not necessarily the case as the current checks in
netlbl_unlabel_staticadd() and friends are not sufficent to
enforce this.
If passed a netlink message with NLBL_UNLABEL_A_IPV4ADDR,
NLBL_UNLABEL_A_IPV6ADDR, and NLBL_UNLABEL_A_IPV6MASK attributes,
these functions will all call netlbl_unlabel_addrinfo_get() which
will then attempt dereference NULL when fetching the non-existent
NLBL_UNLABEL_A_IPV4MASK attribute:
Unable to handle kernel NULL pointer dereference at virtual address 0
Process unlab (pid: 31762, stack limit = 0xffffff80502d8000)
Call trace:
netlbl_unlabel_addrinfo_get+0x44/0xd8
netlbl_unlabel_staticremovedef+0x98/0xe0
genl_rcv_msg+0x354/0x388
netlink_rcv_skb+0xac/0x118
genl_rcv+0x34/0x48
netlink_unicast+0x158/0x1f0
netlink_sendmsg+0x32c/0x338
sock_sendmsg+0x44/0x60
___sys_sendmsg+0x1d0/0x2a8
__sys_sendmsg+0x64/0xb4
SyS_sendmsg+0x34/0x4c
el0_svc_naked+0x34/0x38
Code: 51001149 7100113f 540000a0 f9401508 (
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
netlabel_addrlist.c | ||
netlabel_addrlist.h | ||
netlabel_calipso.c | ||
netlabel_calipso.h | ||
netlabel_cipso_v4.c | ||
netlabel_cipso_v4.h | ||
netlabel_domainhash.c | ||
netlabel_domainhash.h | ||
netlabel_kapi.c | ||
netlabel_mgmt.c | ||
netlabel_mgmt.h | ||
netlabel_unlabeled.c | ||
netlabel_unlabeled.h | ||
netlabel_user.c | ||
netlabel_user.h |