On Wed, Feb 28, 2018 at 03:22:30PM -0800, Brandon Williams wrote: > +static void add_pattern(struct pattern_list *patterns, const char *pattern) > +{ > + struct ref_pattern p; > + const char *wildcard; > + > + p.pattern = strdup(pattern); xstrdup? > + wildcard = strchr(pattern, '*'); > + if (wildcard) { > + p.wildcard_pos = wildcard - pattern; > + } else { > + p.wildcard_pos = -1; > + } Hmm, so this would accept stuff like "refs/heads/*/foo" but quietly ignore the "/foo" part. It also accepts "refs/h*" to get "refs/heads" and "refs/hello". I think it's worth going for the most-restrictive thing to start with, since that enables a lot more server operations without worrying about breaking compatibility. -Peff