diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-11-15 18:58:45 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2021-11-15 18:58:45 +0100 |
| commit | 8772f08ee8f9dc52af4b92290607c48422e8f7f9 (patch) | |
| tree | 8cf54791d306f8ab3de625cada300da522345572 /src/iso19111/operation/coordinateoperationfactory.cpp | |
| parent | dff8131cc1bc27c271c54b0234c1fa3fff8e3062 (diff) | |
| download | PROJ-8772f08ee8f9dc52af4b92290607c48422e8f7f9.tar.gz PROJ-8772f08ee8f9dc52af4b92290607c48422e8f7f9.zip | |
createOperationsGeogToGeog(): avoid potential harmless floating-point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41045
Diffstat (limited to 'src/iso19111/operation/coordinateoperationfactory.cpp')
| -rw-r--r-- | src/iso19111/operation/coordinateoperationfactory.cpp | 5 |
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, |
