diff options
author | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2015-02-03 13:34:47 -0500 |
---|---|---|
committer | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2015-02-05 13:43:54 -0500 |
commit | 68fe6570d19c744f84861b70d541e8b46ac24935 (patch) | |
tree | 781c6c3983a03cf192fd7008c4717f6457454612 /src/mongo/db/geo | |
parent | 00f28d5b4df029f37796313fb1296b3d2326deeb (diff) | |
download | mongo-68fe6570d19c744f84861b70d541e8b46ac24935.tar.gz |
SERVER-16883 Geo Query $center with "NaN" coordinate does not error
Diffstat (limited to 'src/mongo/db/geo')
-rw-r--r-- | src/mongo/db/geo/geoparser.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/db/geo/geoparser.cpp b/src/mongo/db/geo/geoparser.cpp index 12fee4b7917..df8914e3469 100644 --- a/src/mongo/db/geo/geoparser.cpp +++ b/src/mongo/db/geo/geoparser.cpp @@ -32,6 +32,7 @@ #include <string> #include <vector> +#include <cmath> #include "mongo/db/geo/shapes.h" #include "mongo/db/jsobj.h" @@ -78,6 +79,10 @@ namespace mongo { if (!allowAddlFields && it.more()) { return BAD_VALUE("Point must only contain two numeric elements"); } out->x = x.number(); out->y = y.number(); + // Point coordinates must must be finite numbers, neither NaN or infinite. + if (!std::isfinite(out->x) || !std::isfinite(out->y)) { + return BAD_VALUE("Point coordinates must must be finite numbers"); + } return Status::OK(); } |