diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index 45bead6545..b58531209e 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c @@ -397,8 +397,8 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) ALLOC_GROW(opts, onb + 1, osz); memset(opts + onb, 0, sizeof(opts[onb])); argc = parse_options(argc, argv, prefix, opts, usage, - keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0 | - stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0); + (keep_dashdash ? PARSE_OPT_KEEP_DASHDASH : 0) | + (stop_at_non_option ? PARSE_OPT_STOP_AT_NON_OPTION : 0)); strbuf_addf(&parsed, " --"); sq_quote_argv(&parsed, argv, 0); diff --git a/setup.c b/setup.c index 4272ec0ef2..a614f125c3 100644 --- a/setup.c +++ b/setup.c @@ -156,6 +156,8 @@ static int is_git_directory(const char *suspect) char path[PATH_MAX]; size_t len = strlen(suspect); + if (PATH_MAX <= len + strlen("/objects")) + die("Too long path: %.*s", 60, suspect); strcpy(path, suspect); if (getenv(DB_ENVIRONMENT)) { if (access(getenv(DB_ENVIRONMENT), X_OK)) diff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh index e504058062..3b612c67be 100755 --- a/t/t1502-rev-parse-parseopt.sh +++ b/t/t1502-rev-parse-parseopt.sh @@ -79,4 +79,22 @@ test_expect_success 'test --parseopt --keep-dashdash' ' test_cmp expect output ' +cat >expect <output && + test_cmp expect output +' + +cat > expect <output && + test_cmp expect output +' + test_done