From: Peter Eisentraut Date: Fri, 10 Nov 2017 19:21:32 +0000 (-0500) Subject: Fix some null pointer dereferences in LDAP auth code X-Git-Tag: REL9_4_16~59 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0bcdab58e83b2ac2caf4bd78e1583c11df97d4f1;p=thirdparty%2Fpostgresql.git Fix some null pointer dereferences in LDAP auth code An LDAP URL without a host name such as "ldap://" or without a base DN such as "ldap://localhost" would cause a crash when reading pg_hba.conf. If no binddn is configured, an error message might end up trying to print a null pointer, which could crash on some platforms. Author: Thomas Munro Reviewed-by: Michael Paquier --- diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index bf94e941e42..f9d4488d569 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -2013,7 +2013,8 @@ CheckLDAPAuth(Port *port) { ereport(LOG, (errmsg("could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": %s", - port->hba->ldapbinddn, port->hba->ldapserver, ldap_err2string(r)))); + port->hba->ldapbinddn ? port->hba->ldapbinddn : "", + port->hba->ldapserver, ldap_err2string(r)))); return STATUS_ERROR; } diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index 2aac2299b9d..a9506fe7f0c 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -1453,9 +1453,11 @@ parse_hba_auth_opt(char *name, char *val, HbaLine *hbaline, int line_num) return false; } - hbaline->ldapserver = pstrdup(urldata->lud_host); + if (urldata->lud_host) + hbaline->ldapserver = pstrdup(urldata->lud_host); hbaline->ldapport = urldata->lud_port; - hbaline->ldapbasedn = pstrdup(urldata->lud_dn); + if (urldata->lud_dn) + hbaline->ldapbasedn = pstrdup(urldata->lud_dn); if (urldata->lud_attrs) hbaline->ldapsearchattribute = pstrdup(urldata->lud_attrs[0]); /* only use first one */