From da3b535b70b76b2042dcd85315e1d37e3017388c Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 15 Dec 2015 21:55:39 +0100 Subject: Do not generate parent_dn inside dn_contains_uid The function could be used in more cases, if it checks if the supplied DN contains a uid and does not generate the parent_dn. The parent_dn is generated before calling the function. --- service_passwords.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/service_passwords.c b/service_passwords.c index 5cb9924..82dc190 100644 --- a/service_passwords.c +++ b/service_passwords.c @@ -60,9 +60,8 @@ static int get_entry(const char *dn, char **attrs, Slapi_Entry **entry) } /* Check if the parent entry contains a uid attribute. */ -static int parent_dn_contains_uid(char *dn) +static int dn_contains_uid(const char *dn) { - char *parent_dn; char *attrs[] = { "uid", NULL }; Slapi_Entry *entry = NULL; Slapi_Attr *attr = NULL; @@ -70,9 +69,7 @@ static int parent_dn_contains_uid(char *dn) int rc = 0; - parent_dn = slapi_dn_parent(dn); - - rc |= get_entry(parent_dn, attrs, &entry); + rc |= get_entry(dn, attrs, &entry); if (rc != 0 || entry == NULL) { /* parent_dn not found */ rc = 1; @@ -180,6 +177,8 @@ static int pre_bind(Slapi_PBlock *pb) int opId; long msgId; + char *parent_dn; + int rc = 0; char fn[] = "pre_bind in service_passwords plug-in"; @@ -219,7 +218,8 @@ static int pre_bind(Slapi_PBlock *pb) return 0; } - if (parent_dn_contains_uid(dn) != 0) { + parent_dn = slapi_dn_parent(dn); + if (dn_contains_uid(parent_dn) != 0) { /* parent_dn is not an user, so we ignore this bind request. */ return 0; } -- cgit v1.2.3-1-g7c22