Re: [PATCH v3 04/19] refs.c: return error string from ref_update_reject_duplicates on failure
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Apr 25, 2014, 22:12 UTC
- Message-ID
- <20140425221248.GC9218@google.com>
- In-Reply-To
- <1398442494-23438-5-git-send-email-sahlberg@google.com>
Ronnie Sahlberg wrote:
Show 19 quoted lines
> --- a/refs.c
> +++ b/refs.c
> @@ -3393,6 +3393,7 @@ static int ref_update_compare(const void *r1, const void *r2)
> }
>
> static int ref_update_reject_duplicates(struct ref_update **updates, int n,
> + char **err,
> enum action_on_err onerr)
> {
> int i;
> @@ -3400,6 +3401,11 @@ static int ref_update_reject_duplicates(struct ref_update **updates, int n,
> if (!strcmp(updates[i - 1]->refname, updates[i]->refname)) {
> const char *str =
> "Multiple updates for ref '%s' not allowed.";
> + if (err) {
> + *err = xmalloc(PATH_MAX + 41);
> + snprintf(*err, PATH_MAX + 41, str,
> + updates[i]->refname);
> + }Same issues as the previous patch: it's too easy to get the buffer size wrong when updating the message (or, worse, when making it translatable). aprintf or a strbuf should work better.
Otherwise seems sensible.