aboutsummaryrefslogtreecommitdiff
path: root/src/projections/aea.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-09-17 21:34:46 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-09-17 21:34:46 +0200
commit216cf0c26c7e63084f30d9eea03c4f36ae3afcad (patch)
treea2f1e8d1f6e2b73d2432d09aff80bd700ba8bfc2 /src/projections/aea.cpp
parenta49d5a5daddd23a3206e00ca17e58c61076474e9 (diff)
downloadPROJ-216cf0c26c7e63084f30d9eea03c4f36ae3afcad.tar.gz
PROJ-216cf0c26c7e63084f30d9eea03c4f36ae3afcad.zip
aea_e_inverse(): avoid calling asin() with invalid argument which results in NaN being propagated. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=15336
Diffstat (limited to 'src/projections/aea.cpp')
-rw-r--r--src/projections/aea.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/projections/aea.cpp b/src/projections/aea.cpp
index 721ea3c9..d607c95a 100644
--- a/src/projections/aea.cpp
+++ b/src/projections/aea.cpp
@@ -127,6 +127,10 @@ static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse
if (Q->ellips) {
lp.phi = (Q->c - lp.phi * lp.phi) / Q->n;
if (fabs(Q->ec - fabs(lp.phi)) > TOL7) {
+ if (fabs(lp.phi) > 2 ) {
+ proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
+ return lp;
+ }
if ((lp.phi = phi1_(lp.phi, P->e, P->one_es)) == HUGE_VAL) {
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
return lp;