From: Junio C Hamano Date: Thu, 19 May 2016 23:32:13 GMT Subject: Re: [PATCHv9 4/4] pathspec: allow querying for attributes Message-ID: In-Reply-To: <20160519232323.12775-5-sbeller@google.com> Stefan Beller writes: > +attr;; > +After `attr:` comes a space separated list of "attribute > +... > ++ The text looks OK, but does it format well? > + attr_len = strcspn(attr, "="); Scanning for '=' here retains the same bug from the previous iteration where you take !VAR=VAL and silently ignore =VAL part without diagnosing the error, doesn't it? Perhaps strlen(attr) here, and... > + switch (*attr) { > + case '!': > + am->match_mode = MATCH_UNSPECIFIED; > + attr++; > + attr_len--; > + break; > + case '-': > + am->match_mode = MATCH_UNSET; > + attr++; > + attr_len--; > + break; > + default: > + if (attr[attr_len] != '=') > + am->match_mode = MATCH_SET; > + else { > + am->match_mode = MATCH_VALUE; > + am->value = xstrdup(&attr[attr_len + 1]); > + if (strchr(am->value, '\\')) > + die(_("attr spec values must not contain backslashes")); > + } > + break; > + } ... doing strcspn() only in default: part would be a quick fix.