aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-11-15 18:58:45 +0100
committerEven Rouault <even.rouault@spatialys.com>2021-11-15 18:59:03 +0100
commit93a0de1018ecfd704345edd62e851ef3b7c3a1fd (patch)
tree85973d17ace91d23277b1b0e6fe97a46e4eda5d2
parentaeba9bdfe3beffc481b33d647ccf478df03c08a9 (diff)
downloadPROJ-93a0de1018ecfd704345edd62e851ef3b7c3a1fd.tar.gz
PROJ-93a0de1018ecfd704345edd62e851ef3b7c3a1fd.zip
createOperationsGeogToGeog(): avoid potential harmless floating-point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41045
-rw-r--r--src/iso19111/operation/coordinateoperationfactory.cpp5
1 files 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,