From 4edae51095670a7d2b6e21b7fe1c16c99d74ff45 Mon Sep 17 00:00:00 2001 From: youtai <89376495+yota22721@users.noreply.github.com> Date: Wed, 4 Jan 2023 02:28:23 +0900 Subject: [PATCH] Fix StartTLS_Init (#5907) * Fix StartTLS_Init (contribution by Yota Nagaya) --- examples/client/client.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/examples/client/client.c b/examples/client/client.c index 0c1ebc379..251b0185f 100644 --- a/examples/client/client.c +++ b/examples/client/client.c @@ -843,7 +843,8 @@ static int StartTLS_Init(SOCKET_T* sockfd) if (recv(*sockfd, tmpBuf, sizeof(tmpBuf)-1, 0) < 0) err_sys("failed to read STARTTLS command\n"); - if (!XSTRCMP(tmpBuf, starttlsCmd[0])) { + if ((!XSTRNCMP(tmpBuf, starttlsCmd[0], XSTRLEN(starttlsCmd[0]))) && + (tmpBuf[XSTRLEN(starttlsCmd[0])] == ' ')) { printf("%s\n", tmpBuf); } else { err_sys("incorrect STARTTLS command received"); @@ -859,7 +860,8 @@ static int StartTLS_Init(SOCKET_T* sockfd) if (recv(*sockfd, tmpBuf, sizeof(tmpBuf)-1, 0) < 0) err_sys("failed to read STARTTLS command\n"); - if (!XSTRCMP(tmpBuf, starttlsCmd[2])) { + if ((!XSTRNCMP(tmpBuf, starttlsCmd[2], XSTRLEN(starttlsCmd[2]))) && + (tmpBuf[XSTRLEN(starttlsCmd[2])] == '-')) { printf("%s\n", tmpBuf); } else { err_sys("incorrect STARTTLS command received"); @@ -876,7 +878,9 @@ static int StartTLS_Init(SOCKET_T* sockfd) if (recv(*sockfd, tmpBuf, sizeof(tmpBuf)-1, 0) < 0) err_sys("failed to read STARTTLS command\n"); tmpBuf[sizeof(tmpBuf)-1] = '\0'; - if (!XSTRCMP(tmpBuf, starttlsCmd[4])) { + + if ((!XSTRNCMP(tmpBuf, starttlsCmd[4], XSTRLEN(starttlsCmd[4]))) && + (tmpBuf[XSTRLEN(starttlsCmd[4])] == ' ')) { printf("%s\n", tmpBuf); } else { err_sys("incorrect STARTTLS command received, expected 220");