[Asterisk-code-review] res config ldap: Fix configuration inheritance from general (asterisk[13])

Joshua Colp asteriskteam at digium.com
Tue Feb 21 16:34:56 CST 2017


Joshua Colp has submitted this change and it was merged. ( https://gerrit.asterisk.org/5005 )

Change subject: res_config_ldap: Fix configuration inheritance from _general
......................................................................


res_config_ldap: Fix configuration inheritance from _general

The "_general" configuration section allows administrators to provide
both general configuration options (host, port, url, etc.) as well as a
global realtime-to-LDAP-attribute mapping that is a fallback if one of
the later sections do not override it. This neglected to exclude the
general configuration options from the mapping. As an example, during
my testing, chan_sip requested 'port' from realtime, and because I did
not have it defined, it pulled in the 'port' configuration option from
"_general." We now filter those out explicitly.

Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778
---
M res/res_config_ldap.c
1 file changed, 18 insertions(+), 1 deletion(-)

Approvals:
  Mark Michelson: Looks good to me, approved
  Anonymous Coward #1000019: Verified
  Joshua Colp: Looks good to me, but someone else must approve



diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c
index ea7bbad..9d34e57 100644
--- a/res/res_config_ldap.c
+++ b/res/res_config_ldap.c
@@ -1686,6 +1686,21 @@
 	return 0;
 }
 
+static int config_can_be_inherited(const char *key)
+{
+	int i;
+	static const char * const config[] = {
+		"basedn", "host", "pass", "port", "protocol", "url", "user", "version", NULL
+	};
+
+	for (i = 0; config[i]; i++) {
+		if (!strcasecmp(key, config[i])) {
+			return 0;
+		}
+	}
+	return 1;
+}
+
 /*! \brief parse the configuration file
  */
 static int parse_config(void)
@@ -1776,7 +1791,9 @@
 				if (!strcasecmp(var->name, "additionalFilter")) {
 					table_config->additional_filter = ast_strdup(var->value);
 				} else {
-					ldap_table_config_add_attribute(table_config, var->name, var->value);
+					if (!is_general || config_can_be_inherited(var->name)) {
+						ldap_table_config_add_attribute(table_config, var->name, var->value);
+					}
 				}
 			}
 		}

-- 
To view, visit https://gerrit.asterisk.org/5005
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Sean Bright <sean.bright at gmail.com>
Gerrit-Reviewer: Anonymous Coward #1000019
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Mark Michelson <mmichelson at digium.com>



More information about the asterisk-code-review mailing list