git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adam Spiers <git@adamspiers.org>
To: git list <git@vger.kernel.org>
Subject: Re: [PATCH 1/5] check-ignore: move setup into cmd_check_ignore()
Date: Thu, 11 Apr 2013 12:05:11 +0100	[thread overview]
Message-ID: <20130411110511.GB24296@pacific.linksys.moosehall> (raw)
In-Reply-To: <20130411052553.GA28915@sigill.intra.peff.net>

On Thu, Apr 11, 2013 at 01:25:53AM -0400, Jeff King wrote:
> On Thu, Apr 11, 2013 at 02:59:31AM +0100, Adam Spiers wrote:
> > -static int check_ignore(const char *prefix, const char **pathspec)
> > +static int check_ignore(struct path_exclude_check check,
> > +			const char *prefix, const char **pathspec)
> 
> Did you mean to pass the struct by value here? If it is truly a per-path
> value, shouldn't it be declared and initialized inside here? Otherwise
> you risk one invocation munging things that the struct points to, but
> the caller's copy does not know about the change.
> 
> In particular, I see that the struct includes a strbuf. What happens
> when one invocation of check_ignore grows the strbuf, then returns? The
> copy of the struct in the caller will not know that the buffer it is
> pointing to is now bogus.
> 
> > -static int check_ignore_stdin_paths(const char *prefix)
> > +static int check_ignore_stdin_paths(struct path_exclude_check check, const char *prefix)
> 
> Ditto here.

It's not a per-path value; it's supposed to be reused across checks
for multiple paths, as explained in the comments above
last_exclude_matching_path():

    ...
     * A path to a directory known to be excluded is left in check->path to
     * optimize for repeated checks for files in the same excluded directory.
     */
    struct exclude *last_exclude_matching_path(struct path_exclude_check *check,
    ...

So I think you're probably right that there is potential for
check->path to become effectively corrupted due to the caller not
seeing the reallocation.  I'll change this too.

  reply	other threads:[~2013-04-11 11:05 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-08 18:13 RFC: two minor tweaks to check-ignore to help git-annex assistant Adam Spiers
2013-04-08 21:56 ` Junio C Hamano
2013-04-08 22:20 ` Jeff King
2013-04-11  1:59 ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Adam Spiers
2013-04-11  1:59   ` [PATCH 2/5] check-ignore: allow incremental streaming of queries via --stdin Adam Spiers
2013-04-11  5:31     ` Jeff King
2013-04-11 10:55       ` Adam Spiers
2013-04-11 11:20     ` Adam Spiers
2013-04-11 18:33       ` Jeff King
2013-04-11  1:59   ` [PATCH 3/5] Documentation: add caveats about I/O buffering for check-{attr,ignore} Adam Spiers
2013-04-11  5:31     ` Jeff King
2013-04-11  1:59   ` [PATCH 4/5] t0008: remove duplicated test fixture data Adam Spiers
2013-04-11  1:59   ` [PATCH 5/5] check-ignore: add -n / --non-matching option Adam Spiers
2013-04-11  5:25   ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Jeff King
2013-04-11 11:05     ` Adam Spiers [this message]
2013-04-11 12:05       ` [PATCH v2 1/5] t0008: remove duplicated test fixture data Adam Spiers
2013-04-11 12:05         ` [PATCH v2 2/5] check-ignore: add -n / --non-matching option Adam Spiers
2013-04-11 12:05         ` [PATCH v2 3/5] check-ignore: move setup into cmd_check_ignore() Adam Spiers
2013-04-11 12:05         ` [PATCH v2 4/5] check-ignore: allow incremental streaming of queries via --stdin Adam Spiers
2013-04-11 19:11           ` Jeff King
2013-04-11 20:31             ` Adam Spiers
2013-04-11 20:40               ` Jeff King
2013-04-22 18:03               ` Junio C Hamano
2013-04-24  8:02                 ` Adam Spiers
2013-04-29 22:55                   ` [PATCH] t0008: use named pipe (FIFO) to test check-ignore streaming Adam Spiers
2013-04-11 21:04           ` [PATCH v2 4/5] check-ignore: allow incremental streaming of queries via --stdin Aaron Schrab
2013-04-11 22:55             ` Adam Spiers
2013-04-11 12:05         ` [PATCH v2 5/5] Documentation: add caveats about I/O buffering for check-{attr,ignore} Adam Spiers
2013-04-11 18:09           ` Junio C Hamano
2013-04-11 20:12             ` [PATCH v3 " Adam Spiers
2013-04-12  2:12               ` Junio C Hamano
2013-04-12 11:00                 ` Adam Spiers
2013-04-11 18:35       ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Jeff King

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=20130411110511.GB24296@pacific.linksys.moosehall \
    --to=git@adamspiers.org \
    --cc=git@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).