From 2a5facf9152339e8f30592c1f31c3c9abb39e6b7 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 12 Jan 2022 11:39:04 +0100 Subject: Conversion::_exportToPROJString(): fix potential crash introduced in recent commit. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43546 --- src/iso19111/operation/conversion.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/iso19111/operation/conversion.cpp b/src/iso19111/operation/conversion.cpp index 6bccf182..21052a07 100644 --- a/src/iso19111/operation/conversion.cpp +++ b/src/iso19111/operation/conversion.cpp @@ -3850,16 +3850,14 @@ void Conversion::_exportToPROJString( throw io::FormattingException( "Only scale factor = 1 handled for Peirce Quincuncial"); } - const double latitudeOfOriginDeg = - parameterValue(EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN) - ->value() - .unit() - .type() != common::UnitOfMeasure::Type::UNKNOWN - ? parameterValueNumeric( - EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, - common::UnitOfMeasure::DEGREE) - : 90.0; - if (std::fabs(latitudeOfOriginDeg - 90.0) > 1e-10) { + const auto &latitudeOfOriginDeg = parameterValueMeasure( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN); + if (latitudeOfOriginDeg.unit().type() != + common::UnitOfMeasure::Type::UNKNOWN && + std::fabs(parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE) - + 90.0) > 1e-10) { throw io::FormattingException("Only latitude of natural origin = " "90 handled for Peirce Quincuncial"); } -- cgit v1.2.3