Detect an unlikely integer overflow.

This commit is contained in:
Nick Mathewson 2018-09-27 16:30:02 -04:00
parent 9e65e7a36f
commit b058f64cc0
2 changed files with 6 additions and 1 deletions

View File

@ -265,7 +265,10 @@ geoip_note_client_seen(geoip_client_action_t action,
int country_idx = geoip_get_country_by_addr(addr); int country_idx = geoip_get_country_by_addr(addr);
if (country_idx < 0) if (country_idx < 0)
country_idx = 0; /** unresolved requests are stored at index 0. */ country_idx = 0; /** unresolved requests are stored at index 0. */
increment_v3_ns_request(country_idx); IF_BUG_ONCE(country_idx > COUNTRY_MAX) {
return;
}
increment_v3_ns_request((country_t) country_idx);
} }
} }

View File

@ -11,4 +11,6 @@
/** A signed integer representing a country code. */ /** A signed integer representing a country code. */
typedef int16_t country_t; typedef int16_t country_t;
#define COUNTRY_MAX INT16_MAX
#endif #endif