summaryrefslogtreecommitdiff
path: root/src/mongo/db/geo
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2015-02-03 13:34:47 -0500
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2015-02-05 13:43:54 -0500
commit68fe6570d19c744f84861b70d541e8b46ac24935 (patch)
tree781c6c3983a03cf192fd7008c4717f6457454612 /src/mongo/db/geo
parent00f28d5b4df029f37796313fb1296b3d2326deeb (diff)
downloadmongo-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.cpp5
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();
}