*/
/* find next " in string, skipping escaped ones */
-static char *find_quote(char *p)
+static char *find_quote(char *p, bool start)
{
loop:
while (*p && *p != '"')
p++;
- if (p[0] == '"' && p[1] == '"') {
+ if (p[0] == '"' && p[1] == '"' && !start) {
p += 2;
goto loop;
}
break;
}
user = ++p;
- p = find_quote(p);
+ p = find_quote(p, false);
if (*p != '"') {
log_error("broken auth file");
break;
*p++ = 0; /* tag username end */
/* get password */
- p = find_quote(p);
+ p = find_quote(p, true);
if (*p != '"') {
log_error("broken auth file");
break;
}
password = ++p;
- p = find_quote(p);
+ p = find_quote(p, false);
if (*p != '"') {
log_error("broken auth file");
break;