From b30ed5cba50688cea9ac2af90855177f84efea5a Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 3 Feb 2019 12:23:50 +0100 Subject: labrd: avoid floating point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12849. Credit to OSS Fuzz --- src/projections/labrd.cpp | 4 ++++ test/gie/builtins.gie | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/projections/labrd.cpp b/src/projections/labrd.cpp index 330c105f..85ab3ddd 100644 --- a/src/projections/labrd.cpp +++ b/src/projections/labrd.cpp @@ -108,6 +108,10 @@ PJ *PROJECTION(labrd) { return pj_default_destructor (P, ENOMEM); P->opaque = Q; + if (P->phi0 == 0.) { + return pj_default_destructor(P, PJD_ERR_LAT_0_IS_ZERO); + } + Az = pj_param(P->ctx, P->params, "razi").f; sinp = sin(P->phi0); t = 1. - P->es * sinp * sinp; diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie index bc9374a5..82222210 100644 --- a/test/gie/builtins.gie +++ b/test/gie/builtins.gie @@ -2243,6 +2243,10 @@ expect 0.498202281 2.000904357 accept -200 -100 expect 0.498202283 1.999095641 +------------------------------------------------------------------------------- +operation +proj=labrd +ellps=GRS80 +lat_0=0 +accept 0 0 +expect failure errno lat_0_is_zero =============================================================================== Lambert Azimuthal Equal Area -- cgit v1.2.3