From ab19f0d7aec223b89537d07d5f5f3f2e1f5db822 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 21 Mar 2019 09:54:04 +0100 Subject: [PATCH] aea: avoid division by zero Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13827 Credit to OSS Fuzz --- src/projections/aea.cpp | 4 ++++ test/gie/builtins.gie | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/projections/aea.cpp b/src/projections/aea.cpp index f457e836dd..8a80c49cc5 100644 --- a/src/projections/aea.cpp +++ b/src/projections/aea.cpp @@ -180,6 +180,10 @@ static PJ *setup(PJ *P) { return destructor(P, 0); Q->n = (m1 * m1 - m2 * m2) / (ml2 - ml1); + if (Q->n == 0) { + // Not quite, but es is very close to 1... + return destructor(P, PJD_ERR_ECCENTRICITY_IS_ONE_OR_GREATER); + } } Q->ec = 1. - .5 * P->one_es * log((1. - P->e) / (1. + P->e)) / P->e; diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie index 5672478290..97009cff00 100644 --- a/test/gie/builtins.gie +++ b/test/gie/builtins.gie @@ -69,6 +69,11 @@ expect failure errno lat_larger_than_90 operation +proj=aea +ellps=GRS80 +lat_2=900 expect failure errno lat_larger_than_90 +------------------------------------------------------------------------------- +operation +proj=aea +a=9999999 +b=.9 +lat_2=1 +------------------------------------------------------------------------- +expect failure errno eccentricity_is_one + =============================================================================== Azimuthal Equidistant Azi, Sph&Ell