aboutsummaryrefslogtreecommitdiff
path: root/src/projections/nsper.cpp
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2019-05-06 07:10:56 +0200
committerGitHub <noreply@github.com>2019-05-06 07:10:56 +0200
commitf642aadbbcd816a7ae3173ea954c5d5562a11ba4 (patch)
treed5a653a6a306ad4c7fc7bc1586c20fac6d48f627 /src/projections/nsper.cpp
parentc5346c7c25ca9fe281df39eaeefebc1aa4009266 (diff)
parent96af6dbf69dd38421916438702be80f73276d879 (diff)
downloadPROJ-f642aadbbcd816a7ae3173ea954c5d5562a11ba4.tar.gz
PROJ-f642aadbbcd816a7ae3173ea954c5d5562a11ba4.zip
geos: avoid division by zero (#1451)
geos: avoid division by zero
Diffstat (limited to 'src/projections/nsper.cpp')
-rw-r--r--src/projections/nsper.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/projections/nsper.cpp b/src/projections/nsper.cpp
index fbf5317b..d641e1b6 100644
--- a/src/projections/nsper.cpp
+++ b/src/projections/nsper.cpp
@@ -148,8 +148,7 @@ static PJ_LP nsper_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, invers
static PJ *setup(PJ *P) {
struct pj_opaque *Q = static_cast<struct pj_opaque*>(P->opaque);
- if ((Q->height = pj_param(P->ctx, P->params, "dh").f) <= 0.)
- return pj_default_destructor(P, PJD_ERR_H_LESS_THAN_ZERO);
+ Q->height = pj_param(P->ctx, P->params, "dh").f;
if (fabs(fabs(P->phi0) - M_HALFPI) < EPS10)
Q->mode = P->phi0 < 0. ? S_POLE : N_POLE;
@@ -161,6 +160,8 @@ static PJ *setup(PJ *P) {
Q->cosph0 = cos(P->phi0);
}
Q->pn1 = Q->height / P->a; /* normalize by radius */
+ if ( Q->pn1 <= 0 || Q->pn1 > 1e10 )
+ return pj_default_destructor (P, PJD_ERR_INVALID_H);
Q->p = 1. + Q->pn1;
Q->rp = 1. / Q->p;
Q->h = 1. / Q->pn1;