]> git.ipfire.org Git - thirdparty/git.git/blobdiff - alias.c
Sync with 2.34.8
[thirdparty/git.git] / alias.c
diff --git a/alias.c b/alias.c
index c4715380205b5f8dd032b16ade846842fa3c23b9..00abde081739436236aa077412c3b5b686144f42 100644 (file)
--- a/alias.c
+++ b/alias.c
@@ -46,14 +46,16 @@ void list_aliases(struct string_list *list)
 
 #define SPLIT_CMDLINE_BAD_ENDING 1
 #define SPLIT_CMDLINE_UNCLOSED_QUOTE 2
+#define SPLIT_CMDLINE_ARGC_OVERFLOW 3
 static const char *split_cmdline_errors[] = {
        N_("cmdline ends with \\"),
-       N_("unclosed quote")
+       N_("unclosed quote"),
+       N_("too many arguments"),
 };
 
 int split_cmdline(char *cmdline, const char ***argv)
 {
-       int src, dst, count = 0, size = 16;
+       size_t src, dst, count = 0, size = 16;
        char quoted = 0;
 
        ALLOC_ARRAY(*argv, size);
@@ -96,6 +98,11 @@ int split_cmdline(char *cmdline, const char ***argv)
                return -SPLIT_CMDLINE_UNCLOSED_QUOTE;
        }
 
+       if (count >= INT_MAX) {
+               FREE_AND_NULL(*argv);
+               return -SPLIT_CMDLINE_ARGC_OVERFLOW;
+       }
+
        ALLOC_GROW(*argv, count + 1, size);
        (*argv)[count] = NULL;