All of lore.kernel.org
 help / color / mirror / Atom feed
From: A Large Angry SCM <gitzilla@gmail.com>
To: Julian Phillips <julian@quantumfyre.co.uk>
Cc: git@vger.kernel.org
Subject: Re: [RFD PATCH] git-fetch--tool and "insanely" long actions
Date: Thu, 19 Apr 2007 21:53:15 -0400	[thread overview]
Message-ID: <46281D0B.7080802@gmail.com> (raw)
In-Reply-To: <20070420013411.26401.77137.julian@quantumfyre.co.uk>

Julian Phillips wrote:
> On Thu, 19 Apr 2007, A Large Angry SCM wrote:
> 
>> This fixes a problem my repository mirroring script has been having since
>> the git-fetch--tool was added to master in the middle of March. However,
>> it is not a proper fix since it causes actual errors from snprintf() to be
>> ignored. A proper fix is complicated by the lack of a consistent indicator
>> that the buffer is too small across snprintf() implementations.
> .
> .
> .
>>       if (sizeof(msg) <= len)
>> -             die("insanely long action");
>> +             msg[sizeof(msg)-1] = '\0';
> 
> Or you could just let the whole thing through?
> 
> diff --git a/builtin-fetch--tool.c b/builtin-fetch--tool.c
> index e9d6764..9b5ae9f 100644
> --- a/builtin-fetch--tool.c
> +++ b/builtin-fetch--tool.c
> @@ -36,21 +36,26 @@ static int update_ref(const char *action,
>  		      unsigned char *oldval)
>  {
>  	int len;
> -	char msg[1024];
> +	char buffer[1024];
> +	int ret = 0;
> +	char *msg = buffer;
>  	char *rla = getenv("GIT_REFLOG_ACTION");
>  	static struct ref_lock *lock;
>  
>  	if (!rla)
>  		rla = "(reflog update)";
> -	len = snprintf(msg, sizeof(msg), "%s: %s", rla, action);
> -	if (sizeof(msg) <= len)
> -		die("insanely long action");
> +	len = strlen(rla) + strlen(action) + 3;
> +	if (len > sizeof(buffer))
> +		msg = xmalloc(len);
> +	snprintf(msg, len, "%s: %s", rla, action);
>  	lock = lock_any_ref_for_update(refname, oldval);
>  	if (!lock)
> -		return 1;
> +		ret = 1;
>  	if (write_ref_sha1(lock, sha1, msg) < 0)
> -		return 1;
> -	return 0;
> +		ret = 1;
> +	if (msg != buffer)
> +		free(msg);
> +	return ret;
>  }
>  
>  static int update_local_ref(const char *name,


See the last sentence in my original message. Yours also ignores errors 
from snprintf().

  reply	other threads:[~2007-04-20  1:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-20  1:05 [RFD PATCH] git-fetch--tool and "insanely" long actions A Large Angry SCM
2007-04-20  1:34 ` Julian Phillips
2007-04-20  1:53   ` A Large Angry SCM [this message]
2007-04-20  7:40     ` Julian Phillips

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46281D0B.7080802@gmail.com \
    --to=gitzilla@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=julian@quantumfyre.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.