aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-04-15 23:47:40 +0200
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2021-04-15 21:48:11 +0000
commite4d0c40f8247214bc0069fc6eafc13122464e413 (patch)
treef3c2672f50650c2769bdf09a3b1f970756125ce2
parente03a9aacec01aa8082304c192f34fd26b95a5e11 (diff)
downloadPROJ-e4d0c40f8247214bc0069fc6eafc13122464e413.tar.gz
PROJ-e4d0c40f8247214bc0069fc6eafc13122464e413.zip
Merge pull request #2672 from rouault/utm_invalid_zone
utm: error out when value of +zone= is not an integer (fixes #2671)
-rw-r--r--src/param.cpp8
-rw-r--r--test/gie/builtins.gie6
2 files changed, 14 insertions, 0 deletions
diff --git a/src/param.cpp b/src/param.cpp
index a716f9b9..21afc57f 100644
--- a/src/param.cpp
+++ b/src/param.cpp
@@ -201,6 +201,14 @@ PROJVALUE pj_param (PJ_CONTEXT *ctx, paralist *pl, const char *opt) {
switch (type) {
case 'i': /* integer input */
value.i = atoi(opt);
+ for( const char* ptr = opt; *ptr != '\0'; ++ptr )
+ {
+ if( !(*ptr >= '0' && *ptr <= '9') )
+ {
+ proj_context_errno_set (ctx, PROJ_ERR_INVALID_OP_ILLEGAL_ARG_VALUE);
+ value.i = 0;
+ }
+ }
break;
case 'd': /* simple real input */
value.f = pj_atof(opt);
diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie
index b3c84f74..49627874 100644
--- a/test/gie/builtins.gie
+++ b/test/gie/builtins.gie
@@ -6389,6 +6389,12 @@ operation +proj=utm +a=6400000 +zone=30
# utm not possible on sphere
expect failure errno invalid_op_illegal_arg_value
+-------------------------------------------------------------------------------
+# Test that we error out when the UTM zone is not an integer (#2671)
+-------------------------------------------------------------------------------
+operation +proj=utm +zone=11ooops +ellps=WGS84
+expect failure errno invalid_op_illegal_arg_value
+
===============================================================================
# van der Grinten (I)
# Misc Sph