}
p = pw->pw_gecos + pat_match[0].rm_so;
- end = pw->pw_gecos + pat_match[0].rm_so;
+ end = pw->pw_gecos + pat_match[0].rm_eo;
} else {
p = pw->pw_gecos;
end = m_strchrnul(pw->pw_gecos, ',');
}
for (;;) {
- const char *q = MIN(end, m_strchrnul(p, '&'));
+ const char *q = m_strchrnul(p, '&');
- len += m_strncpy(dst + len, n - len, p, q - p);
+ len += m_strncpy(dst + len, n - len, p, MIN(end, q) - p);
p = q + 1;
if (!p[-1] || p >= end)