tor_vsscanf() returns -1 if '%%' doesn't match a '%'.
tor_vsscanf() returns -1 if '%%' doesn't match a '%', but tor_vsscanf() is supposed to return -1 only on malformed patterns.
tor_vsscanf() should return n_matched in this case.
} else if (*pattern == '%') {
if (*buf != '%')
return -1;
++buf;
++pattern;