Interworking: Clearer ANQP element length validation

The upper bound for the element length was already verified, but that
was not apparently noticed by a static analyzer (CID 68128).

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2014-11-23 17:13:47 +02:00
parent b81e274cdf
commit 43aee94899

View file

@ -2808,7 +2808,9 @@ void anqp_resp_cb(void *ctx, const u8 *dst, u8 dialog_token,
end = pos + wpabuf_len(resp);
while (pos < end) {
if (pos + 4 > end) {
unsigned int left = end - pos;
if (left < 4) {
wpa_printf(MSG_DEBUG, "ANQP: Invalid element");
break;
}
@ -2816,7 +2818,8 @@ void anqp_resp_cb(void *ctx, const u8 *dst, u8 dialog_token,
pos += 2;
slen = WPA_GET_LE16(pos);
pos += 2;
if (pos + slen > end) {
left -= 4;
if (left < slen) {
wpa_printf(MSG_DEBUG, "ANQP: Invalid element length "
"for Info ID %u", info_id);
break;