From 8f22c17b2ef9c1e216a1da0206acea41587f67ce Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 24 Mar 2019 16:06:25 +0100 Subject: urm5: avoid division by zero Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13891 Credit to OSS Fuzz --- src/projections/urm5.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/projections/urm5.cpp') 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.; -- cgit v1.2.3 From 00980bf63fae6d350f425c44a648f33d7c09a931 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 26 Apr 2019 18:18:30 +0200 Subject: Prefix inverse and forward functions by their projection names This is mostly to have better OSSFuzz report. Currently a lot of bug summaries are like `proj4/standard_fuzzer: Divide-by-zero in s_inverse` By prefixing the projection name, we will get better reports, like `Divide-by-zero in airy_s_inverse` This also makes it slightly easier to set a breakpoint by function name. --- src/projections/urm5.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/projections/urm5.cpp') diff --git a/src/projections/urm5.cpp b/src/projections/urm5.cpp index f89bb1d5..499644d2 100644 --- a/src/projections/urm5.cpp +++ b/src/projections/urm5.cpp @@ -15,7 +15,7 @@ struct pj_opaque { } // anonymous namespace -static PJ_XY s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forward */ +static PJ_XY urm5_s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forward */ PJ_XY xy = {0.0, 0.0}; struct pj_opaque *Q = static_cast(P->opaque); double t; @@ -54,7 +54,7 @@ PJ *PROJECTION(urm5) { P->es = 0.; P->inv = nullptr; - P->fwd = s_forward; + P->fwd = urm5_s_forward; return P; } -- cgit v1.2.3