mzidek-rh's pull request #20: "sss_override fails to export" was opened

PR body:
"""
Here is a fix + CI test for https://fedorahosted.org/sssd/ticket/3179.

Michal
"""

See the full pull-request at https://github.com/SSSD/sssd/pull/20
... or pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/20/head:pr20
git checkout pr20
From 06d41f825c3a485659c4db1a273b0d881a017a78 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzi...@redhat.com>
Date: Wed, 7 Sep 2016 17:09:53 +0200
Subject: [PATCH 1/2] TOOLS: sss_override without name override

sss_override failed to export user/group overrides
if user had no overrides for name.

Resolves:
https://fedorahosted.org/sssd/ticket/3179
---
 src/tools/sss_override.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/tools/sss_override.c b/src/tools/sss_override.c
index d41da52..212bf9a 100644
--- a/src/tools/sss_override.c
+++ b/src/tools/sss_override.c
@@ -1159,12 +1159,14 @@ list_user_overrides(TALLOC_CTX *mem_ctx,
         }
 
         fqname = ldb_msg_find_attr_as_string(msgs[i], SYSDB_NAME, NULL);
-        ret = sss_parse_internal_fqname(tmp_ctx, fqname, &name, NULL);
-        if (ret != EOK) {
-            ret = ERR_WRONG_NAME_FORMAT;
-            goto done;
+        if (fqname != NULL) {
+            ret = sss_parse_internal_fqname(tmp_ctx, fqname, &name, NULL);
+            if (ret != EOK) {
+                ret = ERR_WRONG_NAME_FORMAT;
+                goto done;
+            }
+            objs[i].name = talloc_steal(objs, name);
         }
-        objs[i].name = talloc_steal(objs, name);
 
         objs[i].uid = ldb_msg_find_attr_as_uint(msgs[i], SYSDB_UIDNUM, 0);
         objs[i].gid = ldb_msg_find_attr_as_uint(msgs[i], SYSDB_GIDNUM, 0);
@@ -1248,12 +1250,14 @@ list_group_overrides(TALLOC_CTX *mem_ctx,
         talloc_steal(objs, objs[i].orig_name);
 
         fqname = ldb_msg_find_attr_as_string(msgs[i], SYSDB_NAME, NULL);
-        ret = sss_parse_internal_fqname(tmp_ctx, fqname, &name, NULL);
-        if (ret != EOK) {
-            ret = ERR_WRONG_NAME_FORMAT;
-            goto done;
+        if (fqname != NULL) {
+            ret = sss_parse_internal_fqname(tmp_ctx, fqname, &name, NULL);
+            if (ret != EOK) {
+                ret = ERR_WRONG_NAME_FORMAT;
+                goto done;
+            }
+            objs[i].name = talloc_steal(objs, name);
         }
-        objs[i].name = talloc_steal(objs, name);
 
         objs[i].gid = ldb_msg_find_attr_as_uint(msgs[i], SYSDB_GIDNUM, 0);
     }

From e21e78231e21c7959e4ce132297fcb31c67681ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20=C5=BDidek?= <mzi...@redhat.com>
Date: Wed, 7 Sep 2016 18:23:16 +0200
Subject: [PATCH 2/2] TEST: Add regression test for ticket #3179

Resolves:
https://fedorahosted.org/sssd/ticket/3179
---
 src/tests/intg/ldap_local_override_test.py | 37 ++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/tests/intg/ldap_local_override_test.py b/src/tests/intg/ldap_local_override_test.py
index 63de836..74d0462 100644
--- a/src/tests/intg/ldap_local_override_test.py
+++ b/src/tests/intg/ldap_local_override_test.py
@@ -902,6 +902,43 @@ def test_regr_2757_override(ldap_conn, env_regr_2757_override):
         pwd.getpwnam('alias1')
 
 
+# Regression test for bug 3179
+# sss_override fails to export user/group data if name is not overriden
+
+
+@pytest.fixture
+def env_regr_3179_override(request, ldap_conn):
+
+    prepare_sssd(request, ldap_conn)
+
+    # Add entries
+    ent_list = ldap_ent.List(ldap_conn.ds_inst.base_dn)
+    ent_list.add_user("user1", 10001, 20001)
+    ent_list.add_group("empty_group", 2002, [])
+
+    create_ldap_fixture(request, ldap_conn, ent_list)
+
+    # Assert entries are not overridden
+    ent.assert_passwd_by_name(
+        'user1',
+        dict(name='user1', passwd='*', uid=10001, gid=20001))
+
+    # Override something something, but not name
+    subprocess.check_call(["sss_override", "user-add", "user1",
+                           "-s", "/bin/myshell"])
+    subprocess.check_call(["sss_override", "group-add", "empty_group",
+                           "-g", "3000"])
+
+    restart_sssd()
+
+
+def test_regr_3179_override(ldap_conn, env_regr_3179_override):
+
+    # exporting should return 0
+    subprocess.check_call(["sss_override", "user-export", "test_file"])
+    subprocess.check_call(["sss_override", "group-export", "test_file"])
+
+
 # Regression test for bug #2790
 # sss_override --name doesn't work with RFC2307 and ghost users
 
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to