aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-03-15 23:52:33 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-03-16 10:10:03 +0100
commit6bde8881169cdf37256b0148e7d383232a4e305e (patch)
tree27092b5af4414fcc7b2695a6cebbac9dc314497e
parent1c4988d6be1cce93c866df98786d2eca3a244816 (diff)
downloadPROJ-6bde8881169cdf37256b0148e7d383232a4e305e.tar.gz
PROJ-6bde8881169cdf37256b0148e7d383232a4e305e.zip
Helmert: avoid potential division by zero
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11893 Credit to OSS Fuzz
-rw-r--r--src/transformations/helmert.cpp4
-rw-r--r--test/gie/4D-API_cs2cs-style.gie2
-rw-r--r--test/gie/more_builtins.gie5
3 files changed, 8 insertions, 3 deletions
diff --git a/src/transformations/helmert.cpp b/src/transformations/helmert.cpp
index 034f76f4..c00fad2f 100644
--- a/src/transformations/helmert.cpp
+++ b/src/transformations/helmert.cpp
@@ -567,14 +567,14 @@ PJ *TRANSFORMATION(helmert, 0) {
if (pj_param_exists (P->params, "theta")) {
P->left = PJ_IO_UNITS_PROJECTED;
P->right = PJ_IO_UNITS_PROJECTED;
+ P->fwd = helmert_forward;
+ P->inv = helmert_reverse;
}
P->fwd4d = helmert_forward_4d;
P->inv4d = helmert_reverse_4d;
P->fwd3d = helmert_forward_3d;
P->inv3d = helmert_reverse_3d;
- P->fwd = helmert_forward;
- P->inv = helmert_reverse;
Q = (struct pj_opaque_helmert *)P->opaque;
diff --git a/test/gie/4D-API_cs2cs-style.gie b/test/gie/4D-API_cs2cs-style.gie
index bcdc256f..424501cc 100644
--- a/test/gie/4D-API_cs2cs-style.gie
+++ b/test/gie/4D-API_cs2cs-style.gie
@@ -185,7 +185,7 @@ operation proj=pipeline
k_0=1 x_0=2600000 y_0=1200000 ellps=bessel units=m
-------------------------------------------------------------------------------
tolerance 20 cm
-accept 7.438632495 46.951082877
+accept 7.438632495 46.951082877 0
expect 2600000.0 1200000.0
-------------------------------------------------------------------------------
diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie
index d1c978a3..e16443d4 100644
--- a/test/gie/more_builtins.gie
+++ b/test/gie/more_builtins.gie
@@ -433,6 +433,11 @@ expect failure errno invalid_arg
operation proj=helmert transpose
expect failure errno invalid_arg
+# Use of 2D Helmert interface with 3D Helmert setup
+operation +proj=ob_tran +o_proj=helmert +o_lat_p=0
+direction inverse
+accept 0 0
+expect failure errno 22
-------------------------------------------------------------------------------
Molodensky-Badekas from IOGP Guidance 7.2, Transformation from La Canoa to REGVEN