summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-05-31 19:10:35 -0700
committerJunio C Hamano <gitster@pobox.com>2022-05-31 19:10:35 -0700
commitdb5b7c3e462a327e07c451d8a6e41b2ba193a1f8 (patch)
treebbfbff91730463c853b0e2338ca127a3ff8e7f81 /dir.c
parent1bcf4f6271ad8c952739164d160e97efd579424f (diff)
parent2acf4cf0010379f10b39eba1fb4e0868a5ba4114 (diff)
downloadgit-db5b7c3e462a327e07c451d8a6e41b2ba193a1f8.tar.gz
Merge branch 'js/ci-gcc-12-fixes'
Fixes real problems noticed by gcc 12 and works around false positives. * js/ci-gcc-12-fixes: dir.c: avoid "exceeds maximum object size" error with GCC v12.x nedmalloc: avoid new compile error compat/win32/syslog: fix use-after-realloc
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/dir.c b/dir.c
index 6b030be2ec..3633c0852e 100644
--- a/dir.c
+++ b/dir.c
@@ -3138,6 +3138,15 @@ char *git_url_basename(const char *repo, int is_bundle, int is_bare)
}
/*
+ * It should not be possible to overflow `ptrdiff_t` by passing in an
+ * insanely long URL, but GCC does not know that and will complain
+ * without this check.
+ */
+ if (end - start < 0)
+ die(_("No directory name could be guessed.\n"
+ "Please specify a directory on the command line"));
+
+ /*
* Strip trailing port number if we've got only a
* hostname (that is, there is no dir separator but a
* colon). This check is required such that we do not