GeoIP: rejected out-of-range coordinates from MMDB lookups
The $geoip_latitude and $geoip_longitude values are formatted with
ngx_sprintf(buf, "%.4f", value) into a buffer sized for a coordinate,
but the DOUBLE/FLOAT value is taken from the database with no range
check. A crafted or corrupted MMDB can store a huge magnitude (e.g.
1e30 or an infinity), and ngx_sprintf, which is unbounded, then writes
past the buffer in the request or connection pool.
Coordinates outside [-180, 180] are now rejected, so the variables
report "not found" as they do for a missing entry. The comparison also
rejects a NaN.