aboutsummaryrefslogtreecommitdiff
path: root/src/projections/omerc.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-04-16 22:02:26 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-04-16 22:03:29 +0200
commit8ae2f83174808ac41324c33a749b9cb7ac7eca51 (patch)
tree079853114e40e2340958a370b1e17c7633cfbd66 /src/projections/omerc.cpp
parentc16c23addf48fcb3c87e18bcfd4ebcf0d873a30d (diff)
downloadPROJ-8ae2f83174808ac41324c33a749b9cb7ac7eca51.tar.gz
PROJ-8ae2f83174808ac41324c33a749b9cb7ac7eca51.zip
omerc: avoid division by zero
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14279 Credit to OSS Fuzz
Diffstat (limited to 'src/projections/omerc.cpp')
-rw-r--r--src/projections/omerc.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/projections/omerc.cpp b/src/projections/omerc.cpp
index c0278043..e07c209e 100644
--- a/src/projections/omerc.cpp
+++ b/src/projections/omerc.cpp
@@ -201,6 +201,10 @@ PJ *PROJECTION(omerc) {
L = pow(pj_tsfn(phi2, sin(phi2), P->e), Q->B);
F = Q->E / H;
p = (L - H) / (L + H);
+ if( p == 0 ) {
+ // Not quite, but es is very close to 1...
+ return pj_default_destructor(P, PJD_ERR_INVALID_ECCENTRICITY);
+ }
J = Q->E * Q->E;
J = (J - L * H) / (J + L * H);
if ((con = lam1 - lam2) < -M_PI)