Re: [PATCH] quickfetch(): Prevent overflow of the rev-list command line
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Jul 8, 2009, 15:12 UTC
- Message-ID
- <4A54B755.4090100@viscovery.net>
- In-Reply-To
- <200907081558.51767.johan@herland.net>
Johan Herland schrieb:
> + /* If rev-list --stdin encounters an unknown commit, it terminates, > + * which will cause SIGPIPE in the write loop below. */
Under the conditions you describe here...
> + signal(SIGPIPE, SIG_IGN);
... and SIGPIPE being ignored...
Show 16 quoted lines
> +
> + err = start_command(&revlist);
> + if (err) {
> + error("could not run rev-list");
> + return err;
> + }
>
> - for (i = 0; argv[i]; i++)
> - free(argv[i]);
> - free(argv);
> - return err;
> + for (ref = ref_map; ref; ref = ref->next) {
> + if (write_in_full(revlist.in, sha1_to_hex(ref->old_sha1), 40) < 0 ||
> + write_in_full(revlist.in, "\n", 1) < 0) {
> + error("failed write to rev-list");
> + err = errno;... don't you get this error message with errno set to EPIPE? Previously, there was no error message.
-- Hannes