summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2016-10-07 17:47:59 +0200
committerLukas Slebodnik <lslebodn@redhat.com>2016-10-14 18:42:54 +0200
commitf3347a0c72afc75b4d829e9981d1bac6b05a8306 (patch)
tree9baaa8f389d3d17dd189d3735c1fa2eec91dbe52
parenta2485c56319041f0021a46d63aac38ec2a5a6b2e (diff)
downloadsssd-f3347a0c72afc75b4d829e9981d1bac6b05a8306.tar.gz
sssd-f3347a0c72afc75b4d829e9981d1bac6b05a8306.tar.xz
sssd-f3347a0c72afc75b4d829e9981d1bac6b05a8306.zip
libwbclient-sssd: update interface to version 0.13
This patch adds wbcCtxUnixIdsToSids() and wbcUnixIdsToSids() to SSSD's libwbclient and implements the latter. Resolves: https://fedorahosted.org/sssd/ticket/3181 Reviewed-by: Fabiano FidĂȘncio <fidencio@redhat.com>
-rw-r--r--src/conf_macros.m44
-rw-r--r--src/sss_client/libwbclient/wbc_ctx_sssd.c7
-rw-r--r--src/sss_client/libwbclient/wbc_idmap_sssd.c26
-rw-r--r--src/sss_client/libwbclient/wbclient.exports6
-rw-r--r--src/sss_client/libwbclient/wbclient_sssd.h31
5 files changed, 71 insertions, 3 deletions
diff --git a/src/conf_macros.m4 b/src/conf_macros.m4
index bc295c5e7..427b0e08d 100644
--- a/src/conf_macros.m4
+++ b/src/conf_macros.m4
@@ -727,10 +727,10 @@ AC_DEFUN([WITH_LIBWBCLIENT],
if test x"$with_libwbclient" = xyes; then
AC_DEFINE(BUILD_LIBWBCLIENT, 1, [whether to build SSSD implementation of libwbclient])
- libwbclient_version="0.12"
+ libwbclient_version="0.13"
AC_SUBST(libwbclient_version)
- libwbclient_version_info="12:0:12"
+ libwbclient_version_info="13:0:13"
AC_SUBST(libwbclient_version_info)
fi
AM_CONDITIONAL([BUILD_LIBWBCLIENT], [test x"$with_libwbclient" = xyes])
diff --git a/src/sss_client/libwbclient/wbc_ctx_sssd.c b/src/sss_client/libwbclient/wbc_ctx_sssd.c
index 1f259ee00..0f5aff473 100644
--- a/src/sss_client/libwbclient/wbc_ctx_sssd.c
+++ b/src/sss_client/libwbclient/wbc_ctx_sssd.c
@@ -167,6 +167,13 @@ wbcErr wbcCtxSidsToUnixIds(struct wbcContext *ctx,
WBC_SSSD_NOT_IMPLEMENTED;
}
+wbcErr wbcCtxUnixIdsToSids(struct wbcContext *ctx,
+ const struct wbcUnixId *ids, uint32_t num_ids,
+ struct wbcDomainSid *sids)
+{
+ WBC_SSSD_NOT_IMPLEMENTED;
+}
+
wbcErr wbcCtxAllocateUid(struct wbcContext *ctx, uid_t *puid)
{
WBC_SSSD_NOT_IMPLEMENTED;
diff --git a/src/sss_client/libwbclient/wbc_idmap_sssd.c b/src/sss_client/libwbclient/wbc_idmap_sssd.c
index 6b5f525f0..c8da97542 100644
--- a/src/sss_client/libwbclient/wbc_idmap_sssd.c
+++ b/src/sss_client/libwbclient/wbc_idmap_sssd.c
@@ -202,3 +202,29 @@ wbcErr wbcSidsToUnixIds(const struct wbcDomainSid *sids, uint32_t num_sids,
return WBC_ERR_SUCCESS;
}
+
+wbcErr wbcUnixIdsToSids(const struct wbcUnixId *ids, uint32_t num_ids,
+ struct wbcDomainSid *sids)
+{
+ size_t c;
+ wbcErr wbc_status;
+
+ for (c = 0; c < num_ids; c++) {
+ switch (ids[c].type) {
+ case WBC_ID_TYPE_UID:
+ wbc_status = wbcUidToSid(ids[c].id.uid, &sids[c]);
+ break;
+ case WBC_ID_TYPE_GID:
+ wbc_status = wbcGidToSid(ids[c].id.gid, &sids[c]);
+ break;
+ default:
+ wbc_status = WBC_ERR_INVALID_PARAM;
+ }
+
+ if (!WBC_ERROR_IS_OK(wbc_status)) {
+ sids[c] = (struct wbcDomainSid){ 0 };
+ };
+ }
+
+ return WBC_ERR_SUCCESS;
+}
diff --git a/src/sss_client/libwbclient/wbclient.exports b/src/sss_client/libwbclient/wbclient.exports
index 574c1d1fe..9d3c2040e 100644
--- a/src/sss_client/libwbclient/wbclient.exports
+++ b/src/sss_client/libwbclient/wbclient.exports
@@ -144,3 +144,9 @@ WBCLIENT_0.12 {
wbcCtxPingDc;
wbcCtxPingDc2;
} WBCLIENT_0.11;
+
+WBCLIENT_0.13 {
+ global:
+ wbcUnixIdsToSids;
+ wbcCtxUnixIdsToSids;
+} WBCLIENT_0.12;
diff --git a/src/sss_client/libwbclient/wbclient_sssd.h b/src/sss_client/libwbclient/wbclient_sssd.h
index ec6d03281..50ba7f843 100644
--- a/src/sss_client/libwbclient/wbclient_sssd.h
+++ b/src/sss_client/libwbclient/wbclient_sssd.h
@@ -73,9 +73,10 @@ const char *wbcErrorString(wbcErr error);
* 0.10: Added wbcPingDc2()
* 0.11: Extended wbcAuthenticateUserEx to provide PAC parsing
* 0.12: Added wbcCtxCreate and friends
+ * 0.13: Added wbcCtxUnixIdsToSids and wbcUnixIdsToSids
**/
#define WBCLIENT_MAJOR_VERSION 0
-#define WBCLIENT_MINOR_VERSION 12
+#define WBCLIENT_MINOR_VERSION 13
#define WBCLIENT_VENDOR_VERSION "Samba libwbclient"
struct wbcLibraryDetails {
uint16_t major_version;
@@ -1031,6 +1032,34 @@ wbcErr wbcSidsToUnixIds(const struct wbcDomainSid *sids, uint32_t num_sids,
struct wbcUnixId *ids);
/**
+ * @brief Convert a list of unix ids to sids
+ *
+ * @param ctx wbclient Context
+ * @param ids Pointer to an array of UNIX IDs to convert
+ * @param num_ids Number of UNIX IDs
+ * @param sids Preallocated output array for translated SIDs
+ *
+ * @return #wbcErr
+ *
+ **/
+wbcErr wbcCtxUnixIdsToSids(struct wbcContext *ctx,
+ const struct wbcUnixId *ids, uint32_t num_ids,
+ struct wbcDomainSid *sids);
+
+/**
+ * @brief Convert a list of unix ids to sids
+ *
+ * @param ids Pointer to an array of UNIX IDs to convert
+ * @param num_ids Number of UNIX IDs
+ * @param sids Preallocated output array for translated SIDs
+ *
+ * @return #wbcErr
+ *
+ **/
+wbcErr wbcUnixIdsToSids(const struct wbcUnixId *ids, uint32_t num_ids,
+ struct wbcDomainSid *sids);
+
+/**
* @brief Obtain a new uid from Winbind
*
* @param *ctx wbclient Context