aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-01-12 11:39:04 +0100
committerEven Rouault <even.rouault@spatialys.com>2022-01-12 11:39:04 +0100
commit2a5facf9152339e8f30592c1f31c3c9abb39e6b7 (patch)
treed5b94785fc624097db802a111320326a59991878
parentfc632783489a9c4f17d83dbffe486bc988042906 (diff)
downloadPROJ-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.cpp18
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");
}