From 93a0de1018ecfd704345edd62e851ef3b7c3a1fd Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 15 Nov 2021 18:58:45 +0100 Subject: createOperationsGeogToGeog(): avoid potential harmless floating-point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41045 --- src/iso19111/operation/coordinateoperationfactory.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/iso19111/operation/coordinateoperationfactory.cpp b/src/iso19111/operation/coordinateoperationfactory.cpp index 3dc7e290..035fbab9 100644 --- a/src/iso19111/operation/coordinateoperationfactory.cpp +++ b/src/iso19111/operation/coordinateoperationfactory.cpp @@ -2427,8 +2427,9 @@ CoordinateOperationFactory::Private::createOperationsGeogToGeog( util::IComparable::Criterion::EQUIVALENT)) { if (offset_pm.value() == 0 && !axisReversal2D && !axisReversal3D) { // If only by vertical units, use a Change of Vertical - // Unit - // transformation + // Unit transformation + if (vconvDst == 0) + throw InvalidOperation("Conversion factor of target unit is 0"); const double factor = vconvSrc / vconvDst; auto conv = Conversion::createChangeVerticalUnit( util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, -- cgit v1.2.3