Stefan Beller <sbeller@xxxxxxxxxx> 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html