From 9215789383f4f56a2d989a07bfcbddcaf7ee4736 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 25 Apr 2019 13:55:46 +0200 Subject: gs50 and other mod_ster projections: avoid divison by zero Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14421 Credit to OSS Fuzz --- src/projections/mod_ster.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/projections/mod_ster.cpp b/src/projections/mod_ster.cpp index b26ea289..50f66839 100644 --- a/src/projections/mod_ster.cpp +++ b/src/projections/mod_ster.cpp @@ -35,7 +35,12 @@ static PJ_XY e_forward (PJ_LP lp, PJ *P) { /* Ellipsoidal, forward */ pow((1. - esphi) / (1. + esphi), P->e * .5)) - M_HALFPI; schi = sin(chi); cchi = cos(chi); - s = 2. / (1. + Q->schio * schi + Q->cchio * cchi * coslon); + const double denom = 1. + Q->schio * schi + Q->cchio * cchi * coslon; + if( denom == 0 ) { + proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION); + return xy; + } + s = 2. / denom; p.r = s * cchi * sinlon; p.i = s * (Q->cchio * schi - Q->schio * cchi * coslon); p = pj_zpoly1(p, Q->zcoeff, Q->n); -- cgit v1.2.3