diff options
author | Sumit Bose <sbose@redhat.com> | 2016-10-07 17:47:59 +0200 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2016-10-14 18:42:54 +0200 |
commit | f3347a0c72afc75b4d829e9981d1bac6b05a8306 (patch) | |
tree | 9baaa8f389d3d17dd189d3735c1fa2eec91dbe52 | |
parent | a2485c56319041f0021a46d63aac38ec2a5a6b2e (diff) | |
download | sssd-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.m4 | 4 | ||||
-rw-r--r-- | src/sss_client/libwbclient/wbc_ctx_sssd.c | 7 | ||||
-rw-r--r-- | src/sss_client/libwbclient/wbc_idmap_sssd.c | 26 | ||||
-rw-r--r-- | src/sss_client/libwbclient/wbclient.exports | 6 | ||||
-rw-r--r-- | src/sss_client/libwbclient/wbclient_sssd.h | 31 |
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 |