Fixed oob read in ntlm_read_ntlm_v2_response
authorakallabeth <akallabeth@posteo.net>
Wed, 15 Apr 2020 15:02:33 +0000 (17:02 +0200)
committerakallabeth <akallabeth@posteo.net>
Tue, 5 May 2020 05:46:10 +0000 (07:46 +0200)
winpr/libwinpr/sspi/NTLM/ntlm_compute.c

index c36dcaa..dbd7f7f 100644 (file)
@@ -124,6 +124,9 @@ void ntlm_print_version_info(NTLM_VERSION_INFO* versionInfo)
 static int ntlm_read_ntlm_v2_client_challenge(wStream* s, NTLMv2_CLIENT_CHALLENGE* challenge)
 {
        size_t size;
+       if (Stream_GetRemainingLength(s) < 28)
+               return -1;
+
        Stream_Read_UINT8(s, challenge->RespType);
        Stream_Read_UINT8(s, challenge->HiRespType);
        Stream_Read_UINT16(s, challenge->Reserved1);
@@ -163,6 +166,8 @@ static int ntlm_write_ntlm_v2_client_challenge(wStream* s, NTLMv2_CLIENT_CHALLEN
 
 int ntlm_read_ntlm_v2_response(wStream* s, NTLMv2_RESPONSE* response)
 {
+       if (Stream_GetRemainingLength(s) < 16)
+               return -1;
        Stream_Read(s, response->Response, 16);
        return ntlm_read_ntlm_v2_client_challenge(s, &(response->Challenge));
 }