batman-adv: fix wrong dhcp option list browsing

In is_type_dhcprequest(), while parsing a DHCP message, if the entry we found in
the option list is neither a padding nor the dhcp-type, we have to ignore it and
jump as many bytes as its length + 1. The "+ 1" byte is given by the subtype
field itself that has to be jumped too.

Reported-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
This commit is contained in:
Antonio Quartulli 2012-02-27 11:29:53 +01:00
Родитель 06a4c1c55d
Коммит 9205cc521e
1 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -558,10 +558,10 @@ static bool is_type_dhcprequest(struct sk_buff *skb, int header_len)
p++;
/* ...and then we jump over the data */
if (pkt_len < *p)
if (pkt_len < 1 + (*p))
goto out;
pkt_len -= *p;
p += (*p);
pkt_len -= 1 + (*p);
p += 1 + (*p);
}
}
out: