void rfc822_qualify(address_t *addr, const char *host)
{
- char *p;
+ if (!host)
+ return;
for (; addr; addr = addr->next) {
if (!addr->group && addr->mailbox && !strchr(addr->mailbox, '@')) {
- p = p_new(char, m_strlen(addr->mailbox) + m_strlen(host) + 2);
- sprintf(p, "%s@%s", addr->mailbox, host); /* __SPRINTF_CHECKED__ */
+ char *p = p_new(char, m_strlen(addr->mailbox) + m_strlen(host) + 2);
+ sprintf(p, "%s@%s", addr->mailbox, host);
p_delete(&addr->mailbox);
addr->mailbox = p;
}
if (!addr)
return 0;
- buflen--; /* save room for the terminal nul */
-
if (addr->personal) {
pos = rfc822_strcpy(buf, buflen, addr->personal, RFC822Specials);
- if (pos + 2 >= buflen)
- goto done;
-
- buf[pos++] = ' ';
- buf[pos++] = '<';
+ pos += m_strcpy(buf + pos, buflen - pos, " <");
}
if (addr->mailbox) {
}
if (addr->personal) {
- if (pos + 1 >= buflen)
- goto done;
- buf[pos++] = '>';
+ pos += m_strputc(buf + pos, buflen - pos, '>');
}
if (addr->group) {
- if (pos + 1 >= buflen)
- goto done;
- buf[pos++] = ':';
+ pos += m_strputc(buf + pos, buflen - pos, ':');
}
} else {
- if (pos + 1 >= buflen)
- goto done;
- buf[pos++] = ';';
+ pos += m_strputc(buf + pos, buflen - pos, ';');
}
- done:
- /* no need to check for length here since we already save space at the
- beginning of this routine */
- buf[pos] = 0;
return pos;
}
{
ssize_t pos;
- buflen--; /* save room for the terminal nul */
pos = m_strnlen(buf, buflen);
if (pos) {
- if (pos + 2 >= buflen)
- goto done;
-
- buf[pos++] = ',';
- buf[pos++] = ' ';
+ pos += m_strcpy(buf + pos, buflen - pos, ", ");
}
for (; addr; addr = addr->next) {
- pos += rfc822_write_address_single(buf + pos, buflen + 1 - pos,
+ pos += rfc822_write_address_single(buf + pos, buflen - pos,
addr, display);
if (!addr->group && addr->next && addr->next->mailbox) {
/* if there is another address, and its not a group mailbox name or
group terminator, add a comma to separate the addresses */
- if (pos + 2 >= buflen)
- break;
-
- buf[pos++] = ',';
- buf[pos++] = ' ';
+ pos += m_strcpy(buf + pos, buflen - pos, ", ");
}
}
- done:
- buf[pos] = '\0';
return pos;
}