Hi
esc is always zero at that point, so no need to store zero in it. Diff
with extra context.
Best,
Martin
--- a/usr.sbin/smtpd/expand.c
+++ b/usr.sbin/smtpd/expand.c
@@ -198,37 +198,36 @@ expand_line_split(char **line, char **ret)
i = 0;
for (s = *line; (*s) && (i < sizeof(buffer)); ++s) {
if (esc) {
buffer[i++] = *s;
esc = 0;
continue;
}
if (*s == '\\') {
esc = 1;
continue;
}
if (*s == ',' && !dq && !sq) {
*ret = buffer;
*line = s+1;
return (1);
}
buffer[i++] = *s;
- esc = 0;
if (*s == '"' && !sq)
dq ^= 1;
if (*s == '\'' && !dq)
sq ^= 1;
}
if (esc || dq || sq || i == sizeof(buffer))
return (-1);
*ret = buffer;
*line = s;
return (i ? 1 : 0);
}
int
expand_line(struct expand *expand, const char *s, int do_includes)
{