mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 00:28:26 -05:00
Fix extractLongLatOrReply() sanity check conditionals.
the check for lat/long valid ranges were performed inside the for loop, two times instead of one, and the first time when the second element of the array, xy[1], was yet not populated. This resulted into issue #2799. Close issue #2799.
This commit is contained in:
parent
3f38b51ad7
commit
f29e384853
18
src/geo.c
18
src/geo.c
@ -89,19 +89,19 @@ int decodeGeohash(double bits, double *xy) {
|
||||
/* Input Argument Helper */
|
||||
/* Take a pointer to the latitude arg then use the next arg for longitude.
|
||||
* On parse error C_ERR is returned, otherwise C_OK. */
|
||||
int extractLongLatOrReply(client *c, robj **argv,
|
||||
double *xy) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
int extractLongLatOrReply(client *c, robj **argv, double *xy) {
|
||||
int i;
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (getDoubleFromObjectOrReply(c, argv[i], xy + i, NULL) !=
|
||||
C_OK) {
|
||||
return C_ERR;
|
||||
}
|
||||
if (xy[0] < GEO_LONG_MIN || xy[0] > GEO_LONG_MAX ||
|
||||
xy[1] < GEO_LAT_MIN || xy[1] > GEO_LAT_MAX) {
|
||||
addReplySds(c, sdscatprintf(sdsempty(),
|
||||
"-ERR invalid longitude,latitude pair %f,%f\r\n",xy[0],xy[1]));
|
||||
return C_ERR;
|
||||
}
|
||||
}
|
||||
if (xy[0] < GEO_LONG_MIN || xy[0] > GEO_LONG_MAX ||
|
||||
xy[1] < GEO_LAT_MIN || xy[1] > GEO_LAT_MAX) {
|
||||
addReplySds(c, sdscatprintf(sdsempty(),
|
||||
"-ERR invalid longitude,latitude pair %f,%f\r\n",xy[0],xy[1]));
|
||||
return C_ERR;
|
||||
}
|
||||
return C_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user