msg: use last_tlv if there is not enough room for another tlv
If the len is not enought for another tlv process. e.g. one more bytes padding at the end of message. And we set extra to NULL instead of msg->last_tlv in tlv_post_recv(). Then the msg->last_tlv will not be initialised. And program will crash if we read msg->last_tlv. e.g. in function pmc_show(). Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>master
parent
8b61aa2c3f
commit
43b2f5d120
2
msg.c
2
msg.c
|
@ -140,7 +140,7 @@ static int suffix_post_recv(uint8_t *ptr, int len, struct tlv_extra *last)
|
||||||
}
|
}
|
||||||
len -= tlv->length;
|
len -= tlv->length;
|
||||||
ptr += tlv->length;
|
ptr += tlv->length;
|
||||||
err = tlv_post_recv(tlv, len ? NULL : last);
|
err = tlv_post_recv(tlv, len > sizeof(struct TLV) ? NULL : last);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue