diff --git a/src/apps/smtp/smtp.c b/src/apps/smtp/smtp.c index 6b5170ec..3c30811d 100644 --- a/src/apps/smtp/smtp.c +++ b/src/apps/smtp/smtp.c @@ -65,7 +65,7 @@ #include "lwip/altcp_tcp.h" #include "lwip/altcp_tls.h" -#include +#include /* strnlen, memcpy */ #include /** TCP poll interval. Unit is 0.5 sec. */ @@ -346,10 +346,10 @@ smtp_set_server_addr(const char* server) { size_t len = 0; if (server != NULL) { - len = strlen(server); + len = strnlen(server, SMTP_MAX_SERVERNAME_LEN); /* strnlen: length WITHOUT terminating 0 byte */ } - if (len > SMTP_MAX_SERVERNAME_LEN) { - return ERR_MEM; + if (len >= SMTP_MAX_SERVERNAME_LEN) { + return ERR_MEM; /* too long or no room for terminating 0 byte */ } if (len != 0) { MEMCPY(smtp_server, server, len); diff --git a/src/include/lwip/apps/smtp_opts.h b/src/include/lwip/apps/smtp_opts.h index 20a0bed0..0c56a9f0 100644 --- a/src/include/lwip/apps/smtp_opts.h +++ b/src/include/lwip/apps/smtp_opts.h @@ -24,7 +24,7 @@ extern "C" { #define SMTP_DEBUG LWIP_DBG_OFF #endif -/** Maximum length reserved for server name */ +/** Maximum length reserved for server name including terminating 0 byte */ #ifndef SMTP_MAX_SERVERNAME_LEN #define SMTP_MAX_SERVERNAME_LEN 256 #endif