mirror of https://gitee.com/openkylin/linux.git
[APPLETALK]: Fix potential OOPS in atalk_sendmsg().
atrtr_find() can return NULL, so do not blindly dereference rt->dev before we check for rt being NULL. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d458fd82c9
commit
201a95afaa
|
@ -1584,7 +1584,6 @@ static int atalk_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
|
||||||
|
|
||||||
if (usat->sat_addr.s_net || usat->sat_addr.s_node == ATADDR_ANYNODE) {
|
if (usat->sat_addr.s_net || usat->sat_addr.s_node == ATADDR_ANYNODE) {
|
||||||
rt = atrtr_find(&usat->sat_addr);
|
rt = atrtr_find(&usat->sat_addr);
|
||||||
dev = rt->dev;
|
|
||||||
} else {
|
} else {
|
||||||
struct atalk_addr at_hint;
|
struct atalk_addr at_hint;
|
||||||
|
|
||||||
|
@ -1592,7 +1591,6 @@ static int atalk_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr
|
||||||
at_hint.s_net = at->src_net;
|
at_hint.s_net = at->src_net;
|
||||||
|
|
||||||
rt = atrtr_find(&at_hint);
|
rt = atrtr_find(&at_hint);
|
||||||
dev = rt->dev;
|
|
||||||
}
|
}
|
||||||
if (!rt)
|
if (!rt)
|
||||||
return -ENETUNREACH;
|
return -ENETUNREACH;
|
||||||
|
|
Loading…
Reference in New Issue