Merge pull request #1121 from rouault/fix_tnsot_zero
[openjpeg.git] / src / bin / common / opj_getopt.c
index ef9a920a51b1ce5829f18a883a4f0167aa5badcd..11ccfc59b740fa366c7b5222a239643f494e6ec6 100644 (file)
@@ -160,12 +160,15 @@ again:
     }
 
     if (argv[opj_optind][0] == '-') { /* long option */
-        char* arg = argv[opj_optind] + 1;
+        char* arg;
         const opj_option_t* o;
         o = longopts;
         len = sizeof(longopts[0]);
 
         if (param > 1) {
+            if (opj_optind + 1 >= argc) {
+                return -1;
+            }
             arg = argv[opj_optind + 1];
             opj_optind++;
         } else {
@@ -240,6 +243,7 @@ again:
                                 '-') { /* Has read next input parameter: No arg for current parameter */
                             if (opj_opterr) {
                                 fprintf(stderr, "%s: option requires an argument\n", arg);
+                                ++opj_optind;
                                 return (BADCH);
                             }
                         }
@@ -247,6 +251,7 @@ again:
                     if (!opj_optarg) {  /* missing argument */
                         if (opj_opterr) {
                             fprintf(stderr, "%s: option requires an argument\n", arg);
+                            ++opj_optind;
                             return (BADCH);
                         }
                     }