diff options
author | Daniel Stenberg <daniel@haxx.se> | 2018-03-06 23:02:16 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2018-03-12 07:47:07 +0100 |
commit | 9889db043393092e9d4b5a42720bba0b3d58deba (patch) | |
tree | 6afbe4e22c8db6551f8aab962e774b260095b67e /lib/openldap.c | |
parent | 535432c0adb62fe167ec09621500470b6fa4eb0f (diff) | |
download | curl-9889db043393092e9d4b5a42720bba0b3d58deba.tar.gz |
openldap: check ldap_get_attribute_ber() results for NULL before using
CVE-2018-1000121
Reported-by: Dario Weisser
Bug: https://curl.haxx.se/docs/adv_2018-97a2.html
Diffstat (limited to 'lib/openldap.c')
-rw-r--r-- | lib/openldap.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/openldap.c b/lib/openldap.c index f2ffdfe67..6927275cf 100644 --- a/lib/openldap.c +++ b/lib/openldap.c @@ -473,7 +473,7 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf, for(ent = ldap_first_message(li->ld, msg); ent; ent = ldap_next_message(li->ld, ent)) { - struct berval bv, *bvals, **bvp = &bvals; + struct berval bv, *bvals; int binary = 0, msgtype; CURLcode writeerr; @@ -535,9 +535,9 @@ static ssize_t ldap_recv(struct connectdata *conn, int sockindex, char *buf, } data->req.bytecount += bv.bv_len + 5; - for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp); - rc == LDAP_SUCCESS; - rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp)) { + for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals); + (rc == LDAP_SUCCESS) && bvals; + rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals)) { int i; if(bv.bv_val == NULL) break; |