URL: https://github.com/SSSD/sssd/pull/44
Author: sumit-bose
 Title: #44: libwbclient-sssd: update interface to version 0.13
Action: opened

PR body:
"""
This patch adds wbcCtxUnixIdsToSids() and wbcUnixIdsToSids() to SSSD's
libwbclient and implements the latter.

Resolves https://fedorahosted.org/sssd/ticket/3181
"""

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/44/head:pr44
git checkout pr44
From 38ff239e240bd0b1ead309d6849e8f1897351ec1 Mon Sep 17 00:00:00 2001
From: Sumit Bose <sb...@redhat.com>
Date: Fri, 7 Oct 2016 17:47:59 +0200
Subject: [PATCH] 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
---
 src/conf_macros.m4                          |  4 ++--
 src/sss_client/libwbclient/wbc_ctx_sssd.c   |  7 +++++++
 src/sss_client/libwbclient/wbc_idmap_sssd.c | 26 +++++++++++++++++++++++
 src/sss_client/libwbclient/wbclient.exports |  6 ++++++
 src/sss_client/libwbclient/wbclient_sssd.h  | 32 ++++++++++++++++++++++++++++-
 5 files changed, 72 insertions(+), 3 deletions(-)

diff --git a/src/conf_macros.m4 b/src/conf_macros.m4
index bc295c5..427b0e0 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 1f259ee..0f5aff4 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 6b5f525..f6e1171 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 574c1d1..9d3c204 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 ec6d032..7755178 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,35 @@ 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 ids         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 ids         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
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org

Reply via email to