|
Fabiano Fidêncio |
40fe76f |
From f9b7073e5cd057cf961b34f99ea1dff0c86b5b6a Mon Sep 17 00:00:00 2001
|
|
Fabiano Fidêncio |
40fe76f |
From: Jakub Hrozek <jhrozek@redhat.com>
|
|
Fabiano Fidêncio |
40fe76f |
Date: Fri, 17 Nov 2017 20:15:34 +0100
|
|
Fabiano Fidêncio |
40fe76f |
Subject: [PATCH 01/15] IPA: Handle empty nisDomainName
|
|
Fabiano Fidêncio |
40fe76f |
MIME-Version: 1.0
|
|
Fabiano Fidêncio |
40fe76f |
Content-Type: text/plain; charset=UTF-8
|
|
Fabiano Fidêncio |
40fe76f |
Content-Transfer-Encoding: 8bit
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
Resolves:
|
|
Fabiano Fidêncio |
40fe76f |
https://pagure.io/SSSD/sssd/issue/3573
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
If nisdomain=, i.e. a blank NIS domain name, sssd was not processing the
|
|
Fabiano Fidêncio |
40fe76f |
netgroup at all. This is not in agreement with man innetgr which says "Any of
|
|
Fabiano Fidêncio |
40fe76f |
the elements in a triple can be empty, which means that anything matches. The
|
|
Fabiano Fidêncio |
40fe76f |
functions described here allow access to the netgroup databases".
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
This patch instead returns an empty domain as well, which eventually
|
|
Fabiano Fidêncio |
40fe76f |
produces the same output as if the netgroup was requested from the
|
|
Fabiano Fidêncio |
40fe76f |
compat tree.
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
To reproduce the bug:
|
|
Fabiano Fidêncio |
40fe76f |
$ ipa netgroup-add
|
|
Fabiano Fidêncio |
40fe76f |
Netgroup name: emptydom
|
|
Fabiano Fidêncio |
40fe76f |
-------------------------
|
|
Fabiano Fidêncio |
40fe76f |
Added netgroup "emptydom"
|
|
Fabiano Fidêncio |
40fe76f |
-------------------------
|
|
Fabiano Fidêncio |
40fe76f |
Netgroup name: emptydom
|
|
Fabiano Fidêncio |
40fe76f |
NIS domain name: ipa.test
|
|
Fabiano Fidêncio |
40fe76f |
IPA unique ID: 164bc15a-f4b3-11e7-acdb-525400ca6df3
|
|
Fabiano Fidêncio |
40fe76f |
$ ipa netgroup-add-member
|
|
Fabiano Fidêncio |
40fe76f |
Netgroup name: emptydom
|
|
Fabiano Fidêncio |
40fe76f |
[member user]: admin
|
|
Fabiano Fidêncio |
40fe76f |
[member group]:
|
|
Fabiano Fidêncio |
40fe76f |
[member host]:
|
|
Fabiano Fidêncio |
40fe76f |
[member host group]:
|
|
Fabiano Fidêncio |
40fe76f |
[member netgroup]:
|
|
Fabiano Fidêncio |
40fe76f |
Netgroup name: emptydom
|
|
Fabiano Fidêncio |
40fe76f |
NIS domain name: ipa.test
|
|
Fabiano Fidêncio |
40fe76f |
Member User: admin
|
|
Fabiano Fidêncio |
40fe76f |
-------------------------
|
|
Fabiano Fidêncio |
40fe76f |
Number of members added 1
|
|
Fabiano Fidêncio |
40fe76f |
-------------------------
|
|
Fabiano Fidêncio |
40fe76f |
$ ipa netgroup-mod --nisdomain="" emptydom
|
|
Fabiano Fidêncio |
40fe76f |
----------------------------
|
|
Fabiano Fidêncio |
40fe76f |
Modified netgroup "emptydom"
|
|
Fabiano Fidêncio |
40fe76f |
----------------------------
|
|
Fabiano Fidêncio |
40fe76f |
Netgroup name: emptydom
|
|
Fabiano Fidêncio |
40fe76f |
Member User: admin
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
Then run:
|
|
Fabiano Fidêncio |
40fe76f |
getent negroup emptydom
|
|
Fabiano Fidêncio |
40fe76f |
without the patch, the netgroup won't be resolvable. It will resolve to
|
|
Fabiano Fidêncio |
40fe76f |
a netgroup triple that looks like this after the patch:
|
|
Fabiano Fidêncio |
40fe76f |
emptydom (-,admin,)
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
Reviewed-by: Fabiano FidĂȘncio <fidencio@redhat.com>
|
|
Fabiano Fidêncio |
40fe76f |
---
|
|
Fabiano Fidêncio |
40fe76f |
src/providers/ipa/ipa_netgroups.c | 6 ++++--
|
|
Fabiano Fidêncio |
40fe76f |
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
diff --git a/src/providers/ipa/ipa_netgroups.c b/src/providers/ipa/ipa_netgroups.c
|
|
Fabiano Fidêncio |
40fe76f |
index 5c929a485..05ebac758 100644
|
|
Fabiano Fidêncio |
40fe76f |
--- a/src/providers/ipa/ipa_netgroups.c
|
|
Fabiano Fidêncio |
40fe76f |
+++ b/src/providers/ipa/ipa_netgroups.c
|
|
Fabiano Fidêncio |
40fe76f |
@@ -953,7 +953,9 @@ static int ipa_netgr_process_all(struct ipa_get_netgroups_state *state)
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
ret = sysdb_attrs_get_string(state->netgroups[i], SYSDB_NETGROUP_DOMAIN,
|
|
Fabiano Fidêncio |
40fe76f |
&domain);
|
|
Fabiano Fidêncio |
40fe76f |
- if (ret != EOK) {
|
|
Fabiano Fidêncio |
40fe76f |
+ if (ret == ENOENT) {
|
|
Fabiano Fidêncio |
40fe76f |
+ domain = NULL;
|
|
Fabiano Fidêncio |
40fe76f |
+ } else if (ret != EOK) {
|
|
Fabiano Fidêncio |
40fe76f |
goto done;
|
|
Fabiano Fidêncio |
40fe76f |
}
|
|
Fabiano Fidêncio |
40fe76f |
|
|
Fabiano Fidêncio |
40fe76f |
@@ -974,7 +976,7 @@ static int ipa_netgr_process_all(struct ipa_get_netgroups_state *state)
|
|
Fabiano Fidêncio |
40fe76f |
for (k = 0; k < hosts_count; k++) {
|
|
Fabiano Fidêncio |
40fe76f |
triple = talloc_asprintf(state, "(%s,%s,%s)",
|
|
Fabiano Fidêncio |
40fe76f |
hosts[k], uids[j],
|
|
Fabiano Fidêncio |
40fe76f |
- domain);
|
|
Fabiano Fidêncio |
40fe76f |
+ domain ? domain : "");
|
|
Fabiano Fidêncio |
40fe76f |
if (triple == NULL) {
|
|
Fabiano Fidêncio |
40fe76f |
ret = ENOMEM;
|
|
Fabiano Fidêncio |
40fe76f |
goto done;
|
|
Fabiano Fidêncio |
40fe76f |
--
|
|
Fabiano Fidêncio |
40fe76f |
2.14.3
|
|
Fabiano Fidêncio |
40fe76f |
|