X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc822address.c;h=36485d39e98ab0975a9d4652aae84667ed1705dd;hp=6c11e631352b80012f4e5f9aec7bf67544ec2a88;hb=22116d7063ab4d7de33946d74ab8b9cbc0f3f6ef;hpb=1ee89902de184a640c171ae3285bff6882a791bd diff --git a/lib-mime/rfc822address.c b/lib-mime/rfc822address.c index 6c11e63..36485d3 100644 --- a/lib-mime/rfc822address.c +++ b/lib-mime/rfc822address.c @@ -32,12 +32,13 @@ 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; } @@ -396,15 +397,9 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen, 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) { @@ -415,26 +410,16 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen, } if (addr->personal) { - if (pos + 1 >= buflen) - goto done; - buf[pos++] = '>'; + pos += m_strcpy(buf + pos, buflen - pos, ">"); } if (addr->group) { - if (pos + 1 >= buflen) - goto done; - buf[pos++] = ':'; + pos += m_strcpy(buf + pos, buflen - pos, ":"); } } else { - if (pos + 1 >= buflen) - goto done; - buf[pos++] = ';'; + pos += m_strcpy(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; } @@ -444,34 +429,23 @@ rfc822_write_address(char *buf, ssize_t buflen, address_t *addr, int display) { 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; }