ppp: potential NULL dereference in ppp_mp_explode()
Smatch complains because we check whether "pch->chan" is NULL and then dereference it unconditionally on the next line. Partly the reason this bug was introduced is because code was too complicated. I've simplified it a little. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
339db11b21
commit
3429769bc6
|
@ -1314,8 +1314,13 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
|
||||||
hdrlen = (ppp->flags & SC_MP_XSHORTSEQ)? MPHDRLEN_SSN: MPHDRLEN;
|
hdrlen = (ppp->flags & SC_MP_XSHORTSEQ)? MPHDRLEN_SSN: MPHDRLEN;
|
||||||
i = 0;
|
i = 0;
|
||||||
list_for_each_entry(pch, &ppp->channels, clist) {
|
list_for_each_entry(pch, &ppp->channels, clist) {
|
||||||
navail += pch->avail = (pch->chan != NULL);
|
if (pch->chan) {
|
||||||
pch->speed = pch->chan->speed;
|
pch->avail = 1;
|
||||||
|
navail++;
|
||||||
|
pch->speed = pch->chan->speed;
|
||||||
|
} else {
|
||||||
|
pch->avail = 0;
|
||||||
|
}
|
||||||
if (pch->avail) {
|
if (pch->avail) {
|
||||||
if (skb_queue_empty(&pch->file.xq) ||
|
if (skb_queue_empty(&pch->file.xq) ||
|
||||||
!pch->had_frag) {
|
!pch->had_frag) {
|
||||||
|
|
Loading…
Reference in a new issue