From b3ee26c5df75d97f6895e6ec4538894ebaf76e48 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 27 Sep 2016 18:01:53 +0200 Subject: [PATCH] connectionexists: use case sensitive user/password comparisons CVE: CVE-2016-8616 Upstream-Status: Backport Bug: https://curl.haxx.se/docs/adv_20161102B.html Reported-by: Cure53 Signed-off-by: Sona Sarmadi diff -ruN a/lib/url.c b/lib/url.c --- a/lib/url.c 2016-11-07 08:50:23.030126833 +0100 +++ b/lib/url.c 2016-11-07 09:16:20.459836564 +0100 @@ -3305,8 +3305,8 @@ if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) { /* This protocol requires credentials per connection, so verify that we're using the same name and password as well */ - if(!strequal(needle->user, check->user) || - !strequal(needle->passwd, check->passwd)) { + if(strcmp(needle->user, check->user) || + strcmp(needle->passwd, check->passwd)) { /* one of them was different */ continue; } @@ -3369,8 +3369,8 @@ possible. (Especially we must not reuse the same connection if partway through a handshake!) */ if(wantNTLMhttp) { - if(!strequal(needle->user, check->user) || - !strequal(needle->passwd, check->passwd)) + if(strcmp(needle->user, check->user) || + strcmp(needle->passwd, check->passwd)) continue; } else if(check->ntlm.state != NTLMSTATE_NONE) { @@ -3380,8 +3380,8 @@ /* Same for Proxy NTLM authentication */ if(wantProxyNTLMhttp) { - if(!strequal(needle->proxyuser, check->proxyuser) || - !strequal(needle->proxypasswd, check->proxypasswd)) + if(strcmp(needle->proxyuser, check->proxyuser) || + strcmp(needle->proxypasswd, check->proxypasswd)) continue; } else if(check->proxyntlm.state != NTLMSTATE_NONE) {