[SSSD] [PATCH] LDAP: Use primary cn to search netgroup

Lukas Slebodnik lslebodn at redhat.com
Mon Sep 16 10:11:10 UTC 2013


On (16/09/13 11:01), Pavel Březina wrote:
>On 09/13/2013 04:52 PM, Lukas Slebodnik wrote:
>>ehlo,
>>
>>Attached patch resolves ticket #2075
>>
>>LS
>
>Hi,
>minor nack.
>
>>+    ret = sdap_get_netgroup_primary_name(memctx, opts, attrs, dom, &name);
>>+    if (ret != EOK) {
>>+        DEBUG(SSSDBG_OP_FAILURE, ("Failed to get netgroup name\n"));
>>+            goto fail;
>>+        }
Fixed.

>
>Wrong indentation ^^ otherwise LGTM
>
>Can you provide steps to reproduce please? I tries following netgroups:
I was not able to reproduce bug too.

Problem was reported in private bug
https://bugzilla.redhat.com/show_bug.cgi?id=991549.

It probably depends on type(version) of LDAP server.

>
>dn: cn=ng-1,ou=Netgroups,dc=ldap,dc=pb
>objectClass: top
>objectClass: nisNetgroup
>cn: ng-1
>cn: ng-3
>nisNetgroupTriple: (,,bobby,example.com)
>nisNetgroupTriple: (,,johny.example.com)
>
>dn: cn=ng-3,ou=Netgroups,dc=ldap,dc=pb
>objectClass: top
>objectClass: nisNetgroup
>cn: ng-3
>nisNetgroupTriple: (,,ajohny.example.com)
>nisNetgroupTriple: (,,abobby,example.com)
>
>$ getent netgroup ng-1
>ng-1                  ( ,,bobby,example.com) ( ,,johny.example.com)
>$ getent netgroup ng-3
>ng-3                  ( ,,bobby,example.com) ( ,,johny.example.com)
>
>But I got the same result (ng-1, no errors) with and without the patch.

Updated patch is attached.

LS
-------------- next part --------------
>From 206d24647ff9e51096e8cb474b53f2eb0a7b1b1c Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lslebodn at redhat.com>
Date: Fri, 13 Sep 2013 16:06:03 +0200
Subject: [PATCH] LDAP: Use primary cn to search netgroup

Resolves:
https://fedorahosted.org/sssd/ticket/2075
---
 src/providers/ldap/sdap.c                 | 11 +++++++++++
 src/providers/ldap/sdap.h                 |  6 ++++++
 src/providers/ldap/sdap_async_netgroups.c | 12 +++++-------
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c
index 7741030cc7a22cdd53c63cc02afd71eb1f4af6b0..078326ad3614ed2cd41659ea279642a46a0e24e1 100644
--- a/src/providers/ldap/sdap.c
+++ b/src/providers/ldap/sdap.c
@@ -1260,3 +1260,14 @@ errno_t sdap_get_group_primary_name(TALLOC_CTX *memctx,
                                  opts->group_map[SDAP_AT_GROUP_NAME].name,
                                  attrs, dom, _group_name);
 }
+
+errno_t sdap_get_netgroup_primary_name(TALLOC_CTX *memctx,
+                                       struct sdap_options *opts,
+                                       struct sysdb_attrs *attrs,
+                                       struct sss_domain_info *dom,
+                                       const char **_netgroup_name)
+{
+    return sdap_get_primary_name(memctx,
+                                 opts->netgroup_map[SDAP_AT_NETGROUP_NAME].name,
+                                 attrs, dom, _netgroup_name);
+}
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index 441ac904bd2d03618376f6770304dc5c4db75923..0e886e9804f5ac8a1b782ee2d49b19973476079d 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -511,6 +511,12 @@ errno_t sdap_get_user_primary_name(TALLOC_CTX *memctx,
                                    struct sss_domain_info *dom,
                                    const char **_user_name);
 
+errno_t sdap_get_netgroup_primary_name(TALLOC_CTX *memctx,
+                                       struct sdap_options *opts,
+                                       struct sysdb_attrs *attrs,
+                                       struct sss_domain_info *dom,
+                                       const char **_netgroup_name);
+
 errno_t sdap_set_config_options_with_rootdse(struct sysdb_attrs *rootdse,
                                              struct sdap_options *opts,
                                              struct sdap_domain *sdom);
diff --git a/src/providers/ldap/sdap_async_netgroups.c b/src/providers/ldap/sdap_async_netgroups.c
index 099955a641f073b59620e7582fc33f9dcefe17b4..b47b3e59099f9f5ac6c55b039c79307f1050f196 100644
--- a/src/providers/ldap/sdap_async_netgroups.c
+++ b/src/providers/ldap/sdap_async_netgroups.c
@@ -53,15 +53,13 @@ static errno_t sdap_save_netgroup(TALLOC_CTX *memctx,
     char *timestamp = NULL;
     char **missing = NULL;
 
-    ret = sysdb_attrs_get_el(attrs,
-                             opts->netgroup_map[SDAP_AT_NETGROUP_NAME].sys_name,
-                             &el);
-    if (ret) goto fail;
-    if (el->num_values == 0) {
-        ret = EINVAL;
+    ret = sdap_get_netgroup_primary_name(memctx, opts, attrs, dom, &name);
+    if (ret != EOK) {
+        DEBUG(SSSDBG_OP_FAILURE, ("Failed to get netgroup name\n"));
         goto fail;
     }
-    name = (const char *)el->values[0].data;
+
+    DEBUG(SSSDBG_TRACE_FUNC, ("Processing netgroup %s\n", name));
 
     netgroup_attrs = sysdb_new_attrs(memctx);
     if (!netgroup_attrs) {
-- 
1.8.3.1



More information about the sssd-devel mailing list