diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2022-01-12 11:39:04 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2022-01-12 11:39:04 +0100 |
| commit | 2a5facf9152339e8f30592c1f31c3c9abb39e6b7 (patch) | |
| tree | d5b94785fc624097db802a111320326a59991878 | |
| parent | fc632783489a9c4f17d83dbffe486bc988042906 (diff) | |
| download | PROJ-2a5facf9152339e8f30592c1f31c3c9abb39e6b7.tar.gz PROJ-2a5facf9152339e8f30592c1f31c3c9abb39e6b7.zip | |
Conversion::_exportToPROJString(): fix potential crash introduced in recent commit. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43546
| -rw-r--r-- | src/iso19111/operation/conversion.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
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"); } |
