{"thread":{"id":"19429","subject":"[PATCH] Terminate argv with NULL before calling setup_revisions()","startedAt":"2009-05-21T09:32:44Z","lastAt":"2009-05-21T09:32:44Z","messageCount":1,"participants":["Nguyễn Thái Ngọc Duy"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"114401","messageId":"1242898364-27391-1-git-send-email-pclouds@gmail.com","threadId":"19429","inReplyTo":null,"subject":"[PATCH] Terminate argv with NULL before calling setup_revisions()","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-05-21T09:32:44Z","receivedAt":"2009-05-21T09:32:44Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"It is convention that argv should be terminated with NULL, even if\nargc is used to specify the size of argv. setup_revisions() requires\nthis and may segfault otherwise.\n\nThis patch makes sure that all argv (that I can find) is NULL terminated.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n bundle.c    |    2 +-\n http-push.c |    3 ++-\n 2 files changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/bundle.c b/bundle.c\nindex d0dd818..e4b2aa9 100644\n--- a/bundle.c\n+++ b/bundle.c\n@@ -98,7 +98,7 @@ int verify_bundle(struct bundle_header *header, int verbose)\n \t */\n \tstruct ref_list *p = &header->prerequisites;\n \tstruct rev_info revs;\n-\tconst char *argv[] = {NULL, \"--all\"};\n+\tconst char *argv[] = {NULL, \"--all\", NULL};\n \tstruct object_array refs;\n \tstruct commit *commit;\n \tint i, ret = 0, req_nr;\ndiff --git a/http-push.c b/http-push.c\nindex 29e8ebf..dac2c6e 100644\n--- a/http-push.c\n+++ b/http-push.c\n@@ -2326,7 +2326,7 @@ int main(int argc, char **argv)\n \tnew_refs = 0;\n \tfor (ref = remote_refs; ref; ref = ref->next) {\n \t\tchar old_hex[60], *new_hex;\n-\t\tconst char *commit_argv[4];\n+\t\tconst char *commit_argv[5];\n \t\tint commit_argc;\n \t\tchar *new_sha1_hex, *old_sha1_hex;\n \n@@ -2406,6 +2406,7 @@ int main(int argc, char **argv)\n \t\t\tcommit_argv[3] = old_sha1_hex;\n \t\t\tcommit_argc++;\n \t\t}\n+\t\tcommit_argv[commit_argc] = NULL;\n \t\tinit_revisions(&revs, setup_git_directory());\n \t\tsetup_revisions(commit_argc, commit_argv, &revs, NULL);\n \t\trevs.edge_hint = 0; /* just in case */\n-- \ntest\n"}]}