Protect precious strlens, as pointed out by John Goerzen
[citadel.git] / citadel / internet_addressing.c
index a8868e954c7a12320e4567113473ccd5bb82ef72..99b22d786ff7f73ec06a46cb2926c3a17b65d170 100644 (file)
@@ -1227,9 +1227,9 @@ int convert_field(struct CtdlMessage *msg, const char *beg, const char *end) {
                process_rfc822_addr(value, user, node, name);
                syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
                snprintf(addr, sizeof(addr), "%s@%s", user, node);
                process_rfc822_addr(value, user, node, name);
                syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
                snprintf(addr, sizeof(addr), "%s@%s", user, node);
-               if (CM_IsEmpty(msg, eAuthor))
+               if (CM_IsEmpty(msg, eAuthor) && !IsEmptyStr(name))
                        CM_SetField(msg, eAuthor, name, strlen(name));
                        CM_SetField(msg, eAuthor, name, strlen(name));
-               if (CM_IsEmpty(msg, erFc822Addr))
+               if (CM_IsEmpty(msg, erFc822Addr) && !IsEmptyStr(addr))
                        CM_SetField(msg, erFc822Addr, addr, strlen(addr));
                processed = 1;
        }
                        CM_SetField(msg, erFc822Addr, addr, strlen(addr));
                processed = 1;
        }