ipaccess: Verify that the data fits in the package.

There is something wrong with the code, the length is
here uint8_t but when we generate a IDGET we put it
as 16bit data.
This commit is contained in:
Holger Hans Peter Freyther
2010-10-14 20:42:45 +02:00
parent 949e0ba648
commit d9e81d0fcf

View File

@@ -103,16 +103,23 @@ int ipaccess_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len)
memset(dec, 0, sizeof(*dec));
while (cur < buf + len) {
while (len >= 2) {
len -= 2;
t_len = *cur++;
t_tag = *cur++;
if (t_len > len + 1) {
LOGP(DMI, LOGL_ERROR, "The tag does not fit: %d\n", t_len);
return -1;
}
DEBUGPC(DMI, "%s='%s' ", ipac_idtag_name(t_tag), cur);
dec->lv[t_tag].len = t_len;
dec->lv[t_tag].val = cur;
cur += t_len;
len -= t_len;
}
return 0;
}