Imported Upstream version 2.28.0
[platform/upstream/git.git] / builtin / bisect--helper.c
index c1c40b5..ec49962 100644 (file)
@@ -455,9 +455,12 @@ static int bisect_start(struct bisect_terms *terms, int no_checkout,
                        no_checkout = 1;
                } else if (!strcmp(arg, "--term-good") ||
                         !strcmp(arg, "--term-old")) {
+                       i++;
+                       if (argc <= i)
+                               return error(_("'' is not a valid term"));
                        must_write_terms = 1;
                        free((void *) terms->term_good);
-                       terms->term_good = xstrdup(argv[++i]);
+                       terms->term_good = xstrdup(argv[i]);
                } else if (skip_prefix(arg, "--term-good=", &arg) ||
                           skip_prefix(arg, "--term-old=", &arg)) {
                        must_write_terms = 1;
@@ -465,16 +468,18 @@ static int bisect_start(struct bisect_terms *terms, int no_checkout,
                        terms->term_good = xstrdup(arg);
                } else if (!strcmp(arg, "--term-bad") ||
                         !strcmp(arg, "--term-new")) {
+                       i++;
+                       if (argc <= i)
+                               return error(_("'' is not a valid term"));
                        must_write_terms = 1;
                        free((void *) terms->term_bad);
-                       terms->term_bad = xstrdup(argv[++i]);
+                       terms->term_bad = xstrdup(argv[i]);
                } else if (skip_prefix(arg, "--term-bad=", &arg) ||
                           skip_prefix(arg, "--term-new=", &arg)) {
                        must_write_terms = 1;
                        free((void *) terms->term_bad);
                        terms->term_bad = xstrdup(arg);
-               } else if (starts_with(arg, "--") &&
-                        !one_of(arg, "--term-good", "--term-bad", NULL)) {
+               } else if (starts_with(arg, "--")) {
                        return error(_("unrecognized option: '%s'"), arg);
                } else {
                        char *commit_id = xstrfmt("%s^{commit}", arg);