aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-03-29 22:09:16 +0000
committerEven Rouault <even.rouault@spatialys.com>2019-03-29 22:31:57 +0000
commit969c654c2db3c169deb3e70e43fbc764f2ffeecb (patch)
tree71eb72bb373e4b1a1c59791334411826be90f80e /src
parentda1940a6088d6b770939dd0e93a82e5ee1ab2f18 (diff)
downloadPROJ-969c654c2db3c169deb3e70e43fbc764f2ffeecb.tar.gz
PROJ-969c654c2db3c169deb3e70e43fbc764f2ffeecb.zip
tpeqd: avoid division by zero
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13948 Credit to OSS Fuzz
Diffstat (limited to 'src')
-rw-r--r--src/projections/tpeqd.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/projections/tpeqd.cpp b/src/projections/tpeqd.cpp
index 20921de4..9904bb8c 100644
--- a/src/projections/tpeqd.cpp
+++ b/src/projections/tpeqd.cpp
@@ -87,6 +87,10 @@ PJ *PROJECTION(tpeqd) {
Q->sc = Q->sp1 * Q->cp2;
Q->ccs = Q->cp1 * Q->cp2 * sin(Q->dlam2);
Q->z02 = aacos(P->ctx, Q->sp1 * Q->sp2 + Q->cp1 * Q->cp2 * cos (Q->dlam2));
+ if( Q->z02 == 0.0 ) {
+ // Actually happens when both lat_1 = lat_2 and |lat_1| = 90
+ return pj_default_destructor(P, PJD_ERR_LAT_1_OR_2_ZERO_OR_90);
+ }
Q->hz0 = .5 * Q->z02;
A12 = atan2(Q->cp2 * sin (Q->dlam2),
Q->cp1 * Q->sp2 - Q->sp1 * Q->cp2 * cos (Q->dlam2));