diff options
| author | Taylor Blau <me@ttaylorr.com> | 2022-10-06 17:48:57 -0400 |
|---|---|---|
| committer | Taylor Blau <me@ttaylorr.com> | 2022-10-06 19:58:16 -0400 |
| commit | f2798aa404c32a7ba4a10c1e8657dcacff5188db (patch) | |
| tree | 87d322406df8ad787cd75ba15a61e9482dbab64c /alias.c | |
| parent | t7527: prepare for changing protocol.file.allow (diff) | |
| parent | Git 2.36.3 (diff) | |
| download | git-f2798aa404c32a7ba4a10c1e8657dcacff5188db.tar.gz git-f2798aa404c32a7ba4a10c1e8657dcacff5188db.zip | |
Sync with 2.36.3
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Diffstat (limited to 'alias.c')
| -rw-r--r-- | alias.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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; |
