diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-03-24 16:06:25 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-03-24 16:06:25 +0100 |
| commit | 8f22c17b2ef9c1e216a1da0206acea41587f67ce (patch) | |
| tree | e16cb4fc8f8579697b9cf9fe5c8979b965fce77b /src | |
| parent | c64972d10d44ea21b41a67ab581ac439d1a7f63b (diff) | |
| download | PROJ-8f22c17b2ef9c1e216a1da0206acea41587f67ce.tar.gz PROJ-8f22c17b2ef9c1e216a1da0206acea41587f67ce.zip | |
urm5: avoid division by zero
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13891
Credit to OSS Fuzz
Diffstat (limited to 'src')
| -rw-r--r-- | src/projections/urm5.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/projections/urm5.cpp b/src/projections/urm5.cpp index a93293c0..f89bb1d5 100644 --- a/src/projections/urm5.cpp +++ b/src/projections/urm5.cpp @@ -45,7 +45,11 @@ PJ *PROJECTION(urm5) { Q->q3 = pj_param(P->ctx, P->params, "dq").f / 3.; alpha = pj_param(P->ctx, P->params, "ralpha").f; t = Q->n * sin (alpha); - Q->m = cos (alpha) / sqrt (1. - t * t); + const double denom = sqrt (1. - t * t); + if( denom == 0 ) { + return pj_default_destructor(P, PJD_ERR_LAT_0_OR_ALPHA_EQ_90); + } + Q->m = cos (alpha) / denom; Q->rmn = 1. / (Q->m * Q->n); P->es = 0.; |
