diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-11-10 14:21:32 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-11-10 14:30:48 -0500 |
commit | 62906461c0d2765e0b7f8222b080670ddf1825b0 (patch) | |
tree | d471a8d173ee98255373507c67313dab42c75470 /src | |
parent | 89afa724c6384b8f64f115f7b866c8625e158f22 (diff) |
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 <thomas.munro@enterprisedb.com>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/libpq/auth.c | 3 | ||||
-rw-r--r-- | src/backend/libpq/hba.c | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index ccc1d11f703..25328ea0915 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -2226,7 +2226,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 c634fa2b7fb..badd8e10593 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -1471,9 +1471,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 */ |