diff --git a/lib/mu-contacts.c b/lib/mu-contacts.c index e3bda562..7df30361 100644 --- a/lib/mu-contacts.c +++ b/lib/mu-contacts.c @@ -225,14 +225,17 @@ mu_contacts_clear (MuContacts *self) static const char* encode_email_address (const char *addr) { - static char enc[254 + 1]; /* max size for an e-mail addr */ - char *cur; + static char enc[254 + 1]; /* max size for an e-mail addr */ + char *cur; if (!addr) return FALSE; + cur = strncpy(enc, addr, sizeof(enc) - 1); + cur[sizeof(enc) - 1] = '\0'; + /* make sure chars are with {' ' .. '~'}, and not '[' ']' */ - for (cur = strncpy(enc, addr, sizeof(enc)); *cur != '\0'; ++cur) + for (; *cur != '\0'; ++cur) if (!isalnum(*cur)) { *cur = 'A' + (*cur % ('Z' - 'A')); } else diff --git a/lib/mu-date.c b/lib/mu-date.c index 053524aa..4d463972 100644 --- a/lib/mu-date.c +++ b/lib/mu-date.c @@ -54,8 +54,10 @@ mu_date_str_s (const char* frm, time_t t) g_warning ("conversion failed: %s", err->message); g_error_free (err); strcpy (buf, ""); - } else - strncpy (buf, conv, sizeof(buf)); + } else { + strncpy (buf, conv, sizeof(buf)-1); + buf[sizeof(buf)-1] = '\0'; + } g_free (conv); } diff --git a/mu/mu-cmd-find.c b/mu/mu-cmd-find.c index 43e9490a..246bf8fd 100644 --- a/mu/mu-cmd-find.c +++ b/mu/mu-cmd-find.c @@ -344,7 +344,8 @@ field_string_list (MuMsg *msg, MuMsgFieldId mfid) str = mu_str_from_list (lst, ','); if (str) { - strncpy (buf, str, sizeof(buf)); + strncpy (buf, str, sizeof(buf)-1); + buf[sizeof(buf)-1]='\0'; g_free (str); return buf; } diff --git a/mu/mu-cmd-server.c b/mu/mu-cmd-server.c index efface46..3804bf64 100644 --- a/mu/mu-cmd-server.c +++ b/mu/mu-cmd-server.c @@ -1406,7 +1406,8 @@ get_path_from_docid (MuStore *store, unsigned docid, GError **err) return NULL; } - strncpy (path, msgpath, sizeof(path)); + strncpy (path, msgpath, sizeof(path) - 1); + path[sizeof(path)-1] = '\0'; mu_msg_unref (msg); return path;