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
Hangbin Liu 2017-05-12 15:36:45 +08:00 committed by Richard Cochran
parent 8b61aa2c3f
commit 43b2f5d120
1 changed files with 1 additions and 1 deletions

2
msg.c
View File

@ -140,7 +140,7 @@ static int suffix_post_recv(uint8_t *ptr, int len, struct tlv_extra *last)
}
len -= 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)
return err;
}