|
|
905b4d |
From 8c68296b9e5d50951e19877bcad46444157d8fc5 Mon Sep 17 00:00:00 2001
|
|
|
905b4d |
From: Sumit Bose <sbose@redhat.com>
|
|
|
905b4d |
Date: Fri, 7 Nov 2014 21:33:36 +0100
|
|
|
905b4d |
Subject: [PATCH 098/104] LDAP: always store UUID if available
|
|
|
905b4d |
|
|
|
905b4d |
Related to https://fedorahosted.org/sssd/ticket/2481
|
|
|
905b4d |
|
|
|
905b4d |
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
|
|
|
905b4d |
---
|
|
|
905b4d |
src/providers/ldap/sdap_async_groups.c | 42 +++++++++++++++++++++++++---------
|
|
|
905b4d |
src/providers/ldap/sdap_async_users.c | 23 +++++++++++++++++--
|
|
|
905b4d |
2 files changed, 52 insertions(+), 13 deletions(-)
|
|
|
905b4d |
|
|
|
905b4d |
diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c
|
|
|
905b4d |
index a82d2aa3418cf5d59181e4be5a1ed6aaeb0b05e9..8cf7f7ff1d414049f0694c7d2873556fc9dad741 100644
|
|
|
905b4d |
--- a/src/providers/ldap/sdap_async_groups.c
|
|
|
905b4d |
+++ b/src/providers/ldap/sdap_async_groups.c
|
|
|
905b4d |
@@ -511,6 +511,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
bool posix_group;
|
|
|
905b4d |
bool use_id_mapping;
|
|
|
905b4d |
char *sid_str;
|
|
|
905b4d |
+ const char *uuid;
|
|
|
905b4d |
struct sss_domain_info *subdomain;
|
|
|
905b4d |
int32_t ad_group_type;
|
|
|
905b4d |
|
|
|
905b4d |
@@ -534,7 +535,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
ret = sysdb_attrs_add_string(group_attrs, SYSDB_SID_STR, sid_str);
|
|
|
905b4d |
if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE, "Could not add SID string: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
} else if (ret == ENOENT) {
|
|
|
905b4d |
@@ -543,10 +544,29 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
sid_str = NULL;
|
|
|
905b4d |
} else {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE, "Could not identify objectSID: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
sid_str = NULL;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
+ /* Always store UUID if available */
|
|
|
905b4d |
+ ret = sysdb_attrs_get_string(attrs,
|
|
|
905b4d |
+ opts->group_map[SDAP_AT_GROUP_UUID].sys_name,
|
|
|
905b4d |
+ &uuid);
|
|
|
905b4d |
+ if (ret == EOK) {
|
|
|
905b4d |
+ ret = sysdb_attrs_add_string(group_attrs, SYSDB_UUID, uuid);
|
|
|
905b4d |
+ if (ret != EOK) {
|
|
|
905b4d |
+ DEBUG(SSSDBG_MINOR_FAILURE, "Could not add UUID string: [%s]\n",
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
+ goto done;
|
|
|
905b4d |
+ }
|
|
|
905b4d |
+ } else if (ret == ENOENT) {
|
|
|
905b4d |
+ DEBUG(SSSDBG_TRACE_ALL, "UUID not available for group [%s].\n",
|
|
|
905b4d |
+ group_name);
|
|
|
905b4d |
+ } else {
|
|
|
905b4d |
+ DEBUG(SSSDBG_MINOR_FAILURE, "Could not identify UUID [%s]\n",
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
+ }
|
|
|
905b4d |
+
|
|
|
905b4d |
/* If this object has a SID available, we will determine the correct
|
|
|
905b4d |
* domain by its SID. */
|
|
|
905b4d |
if (sid_str != NULL) {
|
|
|
905b4d |
@@ -633,7 +653,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
} else if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Could not convert SID string: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -652,7 +672,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
} else if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error reading posix attribute: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -662,7 +682,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error setting posix attribute: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -695,7 +715,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error setting original DN: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -706,7 +726,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error setting mod timestamp: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -715,7 +735,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error looking up group USN: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
if (el->num_values == 0) {
|
|
|
905b4d |
@@ -728,7 +748,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Error setting group USN: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
usn_value = talloc_strdup(tmpctx, (const char*)el->values[0].data);
|
|
|
905b4d |
@@ -759,7 +779,7 @@ static int sdap_save_group(TALLOC_CTX *memctx,
|
|
|
905b4d |
if (ret) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Could not store group with GID: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
@@ -775,7 +795,7 @@ done:
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE,
|
|
|
905b4d |
"Failed to save group [%s]: [%s]\n",
|
|
|
905b4d |
group_name ? group_name : "Unknown",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
}
|
|
|
905b4d |
talloc_free(tmpctx);
|
|
|
905b4d |
return ret;
|
|
|
905b4d |
diff --git a/src/providers/ldap/sdap_async_users.c b/src/providers/ldap/sdap_async_users.c
|
|
|
905b4d |
index 2331ba9df90cdbf8fdb9ae85bd97485b0bcf8bb2..367e3d795ddd0db5c1c2f8e57d700419f371cd15 100644
|
|
|
905b4d |
--- a/src/providers/ldap/sdap_async_users.c
|
|
|
905b4d |
+++ b/src/providers/ldap/sdap_async_users.c
|
|
|
905b4d |
@@ -140,6 +140,7 @@ int sdap_save_user(TALLOC_CTX *memctx,
|
|
|
905b4d |
TALLOC_CTX *tmpctx = NULL;
|
|
|
905b4d |
bool use_id_mapping;
|
|
|
905b4d |
char *sid_str;
|
|
|
905b4d |
+ const char *uuid;
|
|
|
905b4d |
char *dom_sid_str = NULL;
|
|
|
905b4d |
struct sss_domain_info *subdomain;
|
|
|
905b4d |
|
|
|
905b4d |
@@ -165,7 +166,7 @@ int sdap_save_user(TALLOC_CTX *memctx,
|
|
|
905b4d |
ret = sysdb_attrs_add_string(user_attrs, SYSDB_SID_STR, sid_str);
|
|
|
905b4d |
if (ret != EOK) {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE, "Could not add SID string: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
goto done;
|
|
|
905b4d |
}
|
|
|
905b4d |
} else if (ret == ENOENT) {
|
|
|
905b4d |
@@ -173,10 +174,28 @@ int sdap_save_user(TALLOC_CTX *memctx,
|
|
|
905b4d |
sid_str = NULL;
|
|
|
905b4d |
} else {
|
|
|
905b4d |
DEBUG(SSSDBG_MINOR_FAILURE, "Could not identify objectSID: [%s]\n",
|
|
|
905b4d |
- strerror(ret));
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
sid_str = NULL;
|
|
|
905b4d |
}
|
|
|
905b4d |
|
|
|
905b4d |
+ /* Always store UUID if available */
|
|
|
905b4d |
+ ret = sysdb_attrs_get_string(attrs,
|
|
|
905b4d |
+ opts->user_map[SDAP_AT_USER_UUID].sys_name,
|
|
|
905b4d |
+ &uuid);
|
|
|
905b4d |
+ if (ret == EOK) {
|
|
|
905b4d |
+ ret = sysdb_attrs_add_string(user_attrs, SYSDB_UUID, uuid);
|
|
|
905b4d |
+ if (ret != EOK) {
|
|
|
905b4d |
+ DEBUG(SSSDBG_MINOR_FAILURE, "Could not add UUID string: [%s]\n",
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
+ goto done;
|
|
|
905b4d |
+ }
|
|
|
905b4d |
+ } else if (ret == ENOENT) {
|
|
|
905b4d |
+ DEBUG(SSSDBG_TRACE_ALL, "UUID not available for user.\n");
|
|
|
905b4d |
+ } else {
|
|
|
905b4d |
+ DEBUG(SSSDBG_MINOR_FAILURE, "Could not identify UUID [%s]\n",
|
|
|
905b4d |
+ sss_strerror(ret));
|
|
|
905b4d |
+ }
|
|
|
905b4d |
+
|
|
|
905b4d |
/* If this object has a SID available, we will determine the correct
|
|
|
905b4d |
* domain by its SID. */
|
|
|
905b4d |
if (sid_str != NULL) {
|
|
|
905b4d |
--
|
|
|
905b4d |
1.9.3
|
|
|
905b4d |
|