smtp: check for and bail out on too short EHLO response

Otherwise, a three byte response would make the smtp_state_ehlo_resp()
function misbehave.

Credit to OSS-Fuzz
Bug: https://crbug.com/oss-fuzz/16918

Assisted-by: Max Dymond

Closes #4287
This commit is contained in:
Daniel Stenberg 2019-09-02 23:04:26 +02:00
Родитель 198b73d12c
Коммит 4d0306c698
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 5CC908FDB71E12C2
1 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -714,7 +714,7 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
result = CURLE_REMOTE_ACCESS_DENIED;
}
}
else {
else if(len >= 4) {
line += 4;
len -= 4;
@ -785,6 +785,10 @@ static CURLcode smtp_state_ehlo_resp(struct connectdata *conn, int smtpcode,
result = smtp_perform_authentication(conn);
}
}
else {
failf(data, "Unexpectedly short EHLO response");
result = CURLE_WEIRD_SERVER_REPLY;
}
return result;
}