aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-02-21 16:37:40 +0100
committerGitHub <noreply@github.com>2022-02-21 16:37:40 +0100
commit906edb9584efcffc4c4572325dc93f8330c39e28 (patch)
treeec59d181e9b98c34c745bbe15c6073515d9f8fea
parent524b76f2e9f4bb8e4a8d2a4287c23e67c67fce07 (diff)
parent61249e6606513295b9ba5ad9a42cbb3601694d13 (diff)
downloadPROJ-906edb9584efcffc4c4572325dc93f8330c39e28.tar.gz
PROJ-906edb9584efcffc4c4572325dc93f8330c39e28.zip
Merge pull request #3070 from rouault/fix_crash_on_argc_0
Fix nullptr dereference in utilities when argv[0] == NULL
-rw-r--r--src/apps/cs2cs.cpp4
-rw-r--r--src/apps/geod.cpp4
-rw-r--r--src/apps/optargpm.h3
-rw-r--r--src/apps/proj.cpp4
4 files changed, 15 insertions, 0 deletions
diff --git a/src/apps/cs2cs.cpp b/src/apps/cs2cs.cpp
index 03fd4dba..a8e152a7 100644
--- a/src/apps/cs2cs.cpp
+++ b/src/apps/cs2cs.cpp
@@ -346,6 +346,10 @@ int main(int argc, char **argv) {
int have_to_flag = 0, inverse = 0;
int use_env_locale = 0;
+ if( argc == 0 ) {
+ exit(1);
+ }
+
/* This is just to check that pj_init() is locale-safe */
/* Used by nad/testvarious */
if (getenv("PROJ_USE_ENV_LOCALE") != nullptr)
diff --git a/src/apps/geod.cpp b/src/apps/geod.cpp
index 6e3f059e..4f48a57a 100644
--- a/src/apps/geod.cpp
+++ b/src/apps/geod.cpp
@@ -136,6 +136,10 @@ int main(int argc, char **argv) {
FILE *fid;
static int eargc = 0, c;
+ if( argc == 0 ) {
+ exit(1);
+ }
+
if ((emess_dat.Prog_name = strrchr(*argv,'/')) != nullptr) ++emess_dat.Prog_name;
else emess_dat.Prog_name = *argv;
inverse = strncmp(emess_dat.Prog_name, "inv", 3) == 0 ||
diff --git a/src/apps/optargpm.h b/src/apps/optargpm.h
index 9a66b9a0..921b8c0b 100644
--- a/src/apps/optargpm.h
+++ b/src/apps/optargpm.h
@@ -415,6 +415,9 @@ OPTARGS *opt_parse (int argc, char **argv, const char *flags, const char *keys,
int free_format;
OPTARGS *o;
+ if( argc == 0 )
+ return nullptr;
+
o = (OPTARGS *) calloc (1, sizeof(OPTARGS));
if (nullptr==o)
return nullptr;
diff --git a/src/apps/proj.cpp b/src/apps/proj.cpp
index f93164e0..629501e3 100644
--- a/src/apps/proj.cpp
+++ b/src/apps/proj.cpp
@@ -300,6 +300,10 @@ int main(int argc, char **argv) {
FILE *fid;
int eargc = 0, mon = 0;
+ if( argc == 0 ) {
+ exit(1);
+ }
+
if ( (emess_dat.Prog_name = strrchr(*argv,DIR_CHAR)) != nullptr)
++emess_dat.Prog_name;
else emess_dat.Prog_name = *argv;