The branch, v3-2-test has been updated
       via  05f7f77135ab997b92b2454871f21543ecbde0ed (commit)
       via  2b236c7ace15b4408c31ed918b449d5a22e1769f (commit)
       via  dc9a3f8db0af03b4e8223068857092fcaff404f2 (commit)
       via  364e146805bb74b46da4d3c187e9a684d4b99a01 (commit)
      from  c4e1439eded7bb4df60b9d4b457e5b7898928c9e (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 05f7f77135ab997b92b2454871f21543ecbde0ed
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Fri Apr 11 15:16:51 2008 +0200

    net: 'net' doesn't need wb_common.o anymore.
    
    metze

commit 2b236c7ace15b4408c31ed918b449d5a22e1769f
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Fri Apr 11 12:01:02 2008 +0200

    nsswitch: remove unused nsswitch/wb_client.c
    
    metze

commit dc9a3f8db0af03b4e8223068857092fcaff404f2
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Fri Apr 11 12:00:29 2008 +0200

    net_idmap: use wbcSet[U|G]idMapping() and wbcSet[U|G]idHwm() functions
    
    metze

commit 364e146805bb74b46da4d3c187e9a684d4b99a01
Author: Stefan Metzmacher <[EMAIL PROTECTED]>
Date:   Fri Apr 11 09:28:20 2008 +0200

    libwbclient: add wbcSet[U|G]idMapping() and wbcSet[U|G]idHwm() functions
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source/Makefile.in                      |    4 +-
 source/nsswitch/libwbclient/wbc_idmap.c |  149 +++++++++++++++++++++++++++++++
 source/nsswitch/libwbclient/wbclient.h  |    8 ++
 source/nsswitch/wb_client.c             |   96 --------------------
 source/utils/net_idmap.c                |   46 ++++++----
 5 files changed, 186 insertions(+), 117 deletions(-)
 delete mode 100644 source/nsswitch/wb_client.c


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index d89278c..408a2f4 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -862,7 +862,7 @@ NET_OBJ1 = utils/net.o utils/net_ads.o utils/net_help.o \
           $(PASSWD_UTIL_OBJ) utils/net_dns.o utils/net_ads_gpo.o \
           utils/net_conf.o \
           utils/net_registry.o \
-          auth/token_util.o utils/net_dom.o nsswitch/wb_client.o
+          auth/token_util.o utils/net_dom.o
 
 # these are not processed by make proto
 NET_OBJ2 = utils/net_registry_util.o
@@ -879,7 +879,7 @@ NET_OBJ = $(NET_OBJ1) \
          $(LDB_OBJ) $(LIBGPO_OBJ) @BUILD_INIPARSER@ $(DISPLAY_SEC_OBJ) \
          $(REG_SMBCONF_OBJ) @LIBNETAPI_STATIC@ $(LIBNET_OBJ) \
          $(LIBSMBCONF_OBJ) \
-         $(WBCOMMON_OBJ) @LIBWBCLIENT_STATIC@ \
+         @LIBWBCLIENT_STATIC@ \
          $(PRIVILEGES_BASIC_OBJ)
 
 CUPS_OBJ = client/smbspool.o $(PARAM_OBJ) $(LIBSMB_OBJ) \
diff --git a/source/nsswitch/libwbclient/wbc_idmap.c 
b/source/nsswitch/libwbclient/wbc_idmap.c
index 17f6fb8..e32d66c 100644
--- a/source/nsswitch/libwbclient/wbc_idmap.c
+++ b/source/nsswitch/libwbclient/wbc_idmap.c
@@ -272,3 +272,152 @@ wbcErr wbcAllocateGid(gid_t *pgid)
        return wbc_status;
 }
 
+/* we can't include smb.h here... */
+#define _ID_TYPE_UID 1
+#define _ID_TYPE_GID 2
+
+/** @brief Set an user id mapping
+ *
+ * @param uid       Uid of the desired mapping.
+ * @param *sid      Pointer to the sid of the diresired mapping.
+ *
+ * @return #wbcErr
+ **/
+wbcErr wbcSetUidMapping(uid_t uid, const struct wbcDomainSid *sid)
+{
+       struct winbindd_request request;
+       struct winbindd_response response;
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+       char *sid_string = NULL;
+
+       if (!sid) {
+               return WBC_ERR_INVALID_PARAM;
+       }
+
+       /* Initialise request */
+
+       ZERO_STRUCT(request);
+       ZERO_STRUCT(response);
+
+       /* Make request */
+
+       request.data.dual_idmapset.id = uid;
+       request.data.dual_idmapset.type = _ID_TYPE_UID;
+
+       wbc_status = wbcSidToString(sid, &sid_string);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+       strncpy(request.data.dual_idmapset.sid, sid_string,
+               sizeof(request.data.dual_idmapset.sid)-1);
+       wbcFreeMemory(sid_string);
+
+       wbc_status = wbcRequestResponse(WINBINDD_SET_MAPPING,
+                                       &request, &response);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+ done:
+       return wbc_status;
+}
+
+/** @brief Set a group id mapping
+ *
+ * @param gid       Gid of the desired mapping.
+ * @param *sid      Pointer to the sid of the diresired mapping.
+ *
+ * @return #wbcErr
+ **/
+wbcErr wbcSetGidMapping(gid_t gid, const struct wbcDomainSid *sid)
+{
+       struct winbindd_request request;
+       struct winbindd_response response;
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+       char *sid_string = NULL;
+
+       if (!sid) {
+               return WBC_ERR_INVALID_PARAM;
+       }
+
+       /* Initialise request */
+
+       ZERO_STRUCT(request);
+       ZERO_STRUCT(response);
+
+       /* Make request */
+
+       request.data.dual_idmapset.id = gid;
+       request.data.dual_idmapset.type = _ID_TYPE_GID;
+
+       wbc_status = wbcSidToString(sid, &sid_string);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+       strncpy(request.data.dual_idmapset.sid, sid_string,
+               sizeof(request.data.dual_idmapset.sid)-1);
+       wbcFreeMemory(sid_string);
+
+       wbc_status = wbcRequestResponse(WINBINDD_SET_MAPPING,
+                                       &request, &response);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+ done:
+       return wbc_status;
+}
+
+/** @brief Set the highwater mark for allocated uids.
+ *
+ * @param uid_hwm      The new uid highwater mark value
+ *
+ * @return #wbcErr
+ **/
+wbcErr wbcSetUidHwm(uid_t uid_hwm)
+{
+       struct winbindd_request request;
+       struct winbindd_response response;
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+
+       /* Initialise request */
+
+       ZERO_STRUCT(request);
+       ZERO_STRUCT(response);
+
+       /* Make request */
+
+       request.data.dual_idmapset.id = uid_hwm;
+       request.data.dual_idmapset.type = _ID_TYPE_UID;
+
+       wbc_status = wbcRequestResponse(WINBINDD_SET_HWM,
+                                       &request, &response);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+ done:
+       return wbc_status;
+}
+
+/** @brief Set the highwater mark for allocated gids.
+ *
+ * @param uid_hwm      The new gid highwater mark value
+ *
+ * @return #wbcErr
+ **/
+wbcErr wbcSetGidHwm(gid_t gid_hwm)
+{
+       struct winbindd_request request;
+       struct winbindd_response response;
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+
+       /* Initialise request */
+
+       ZERO_STRUCT(request);
+       ZERO_STRUCT(response);
+
+       /* Make request */
+
+       request.data.dual_idmapset.id = gid_hwm;
+       request.data.dual_idmapset.type = _ID_TYPE_GID;
+
+       wbc_status = wbcRequestResponse(WINBINDD_SET_HWM,
+                                       &request, &response);
+       BAIL_ON_WBC_ERROR(wbc_status);
+
+ done:
+       return wbc_status;
+}
diff --git a/source/nsswitch/libwbclient/wbclient.h 
b/source/nsswitch/libwbclient/wbclient.h
index 16b68c0..4e7e5af 100644
--- a/source/nsswitch/libwbclient/wbclient.h
+++ b/source/nsswitch/libwbclient/wbclient.h
@@ -346,6 +346,14 @@ wbcErr wbcAllocateUid(uid_t *puid);
 
 wbcErr wbcAllocateGid(gid_t *pgid);
 
+wbcErr wbcSetUidMapping(uid_t uid, const struct wbcDomainSid *sid);
+
+wbcErr wbcSetGidMapping(gid_t gid, const struct wbcDomainSid *sid);
+
+wbcErr wbcSetUidHwm(uid_t uid_hwm);
+
+wbcErr wbcSetGidHwm(gid_t gid_hwm);
+
 /*
  * NSS Lookup User/Group details
  */
diff --git a/source/nsswitch/wb_client.c b/source/nsswitch/wb_client.c
deleted file mode 100644
index 5e1a5d8..0000000
--- a/source/nsswitch/wb_client.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   winbind client code
-
-   Copyright (C) Tim Potter 2000
-   Copyright (C) Andrew Tridgell 2000
-   
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-   
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-   
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "nsswitch/winbind_nss.h"
-#include "libwbclient/wbclient.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_WINBIND
-
-NSS_STATUS winbindd_request_response(int req_type,
-                                 struct winbindd_request *request,
-                                 struct winbindd_response *response);
-
-bool winbind_set_mapping(const struct id_map *map)
-{
-       struct winbindd_request request;
-       struct winbindd_response response;
-       int result;
-
-       /* Initialise request */
-
-       ZERO_STRUCT(request);
-       ZERO_STRUCT(response);
-
-       /* Make request */
-
-       request.data.dual_idmapset.id = map->xid.id;
-       request.data.dual_idmapset.type = map->xid.type;
-       sid_to_fstring(request.data.dual_idmapset.sid, map->sid);
-
-       result = winbindd_request_response(WINBINDD_SET_MAPPING, &request, 
&response);
-
-       return (result == NSS_STATUS_SUCCESS);
-}
-
-bool winbind_set_uid_hwm(unsigned long id)
-{
-       struct winbindd_request request;
-       struct winbindd_response response;
-       int result;
-
-       /* Initialise request */
-
-       ZERO_STRUCT(request);
-       ZERO_STRUCT(response);
-
-       /* Make request */
-
-       request.data.dual_idmapset.id = id;
-       request.data.dual_idmapset.type = ID_TYPE_UID;
-
-       result = winbindd_request_response(WINBINDD_SET_HWM, &request, 
&response);
-
-       return (result == NSS_STATUS_SUCCESS);
-}
-
-bool winbind_set_gid_hwm(unsigned long id)
-{
-       struct winbindd_request request;
-       struct winbindd_response response;
-       int result;
-
-       /* Initialise request */
-
-       ZERO_STRUCT(request);
-       ZERO_STRUCT(response);
-
-       /* Make request */
-
-       request.data.dual_idmapset.id = id;
-       request.data.dual_idmapset.type = ID_TYPE_GID;
-
-       result = winbindd_request_response(WINBINDD_SET_HWM, &request, 
&response);
-
-       return (result == NSS_STATUS_SUCCESS);
-}
diff --git a/source/utils/net_idmap.c b/source/utils/net_idmap.c
index f0c3e56..b002489 100644
--- a/source/utils/net_idmap.c
+++ b/source/utils/net_idmap.c
@@ -101,9 +101,10 @@ static int net_idmap_restore(int argc, const char **argv)
        while (!feof(input)) {
                char line[128], sid_string[128];
                int len;
-               DOM_SID sid;
-               struct id_map map;
+               struct wbcDomainSid sid;
+               enum id_type type = ID_TYPE_NOT_SPECIFIED;
                unsigned long idval;
+               wbcErr wbc_status;
 
                if (fgets(line, 127, input) == NULL)
                        break;
@@ -114,21 +115,23 @@ static int net_idmap_restore(int argc, const char **argv)
                        line[len-1] = '\0';
 
                if (sscanf(line, "GID %lu %128s", &idval, sid_string) == 2) {
-                       map.xid.type = ID_TYPE_GID;
-                       map.xid.id = idval;
+                       type = ID_TYPE_GID;
                } else if (sscanf(line, "UID %lu %128s", &idval, sid_string) == 
2) {
-                       map.xid.type = ID_TYPE_UID;
-                       map.xid.id = idval;
+                       type = ID_TYPE_UID;
                } else if (sscanf(line, "USER HWM %lu", &idval) == 1) {
                        /* set uid hwm */
-                       if (! winbind_set_uid_hwm(idval)) {
-                               d_fprintf(stderr, "Could not set USER HWM\n");
+                       wbc_status = wbcSetUidHwm(idval);
+                       if (!WBC_ERROR_IS_OK(wbc_status)) {
+                               d_fprintf(stderr, "Could not set USER HWM: 
%s\n",
+                                         wbcErrorString(wbc_status));
                        }
                        continue;
                } else if (sscanf(line, "GROUP HWM %lu", &idval) == 1) {
                        /* set gid hwm */
-                       if (! winbind_set_gid_hwm(idval)) {
-                               d_fprintf(stderr, "Could not set GROUP HWM\n");
+                       wbc_status = wbcSetGidHwm(idval);
+                       if (!WBC_ERROR_IS_OK(wbc_status)) {
+                               d_fprintf(stderr, "Could not set GROUP HWM: 
%s\n",
+                                         wbcErrorString(wbc_status));
                        }
                        continue;
                } else {
@@ -136,20 +139,25 @@ static int net_idmap_restore(int argc, const char **argv)
                        continue;
                }
 
-               if (!string_to_sid(&sid, sid_string)) {
-                       d_fprintf(stderr, "ignoring invalid sid [%s]\n", 
sid_string);
+               wbc_status = wbcStringToSid(sid_string, &sid);
+               if (!WBC_ERROR_IS_OK(wbc_status)) {
+                       d_fprintf(stderr, "ignoring invalid sid [%s]: %s\n",
+                                 sid_string, wbcErrorString(wbc_status));
                        continue;
                }
-               map.sid = &sid;
 
-               if (!winbind_set_mapping(&map)) {
-                       d_fprintf(stderr, "Could not set mapping of %s %lu to 
sid %s\n",
-                                (map.xid.type == ID_TYPE_GID) ? "GID" : "UID",
-                                (unsigned long)map.xid.id,
-                                 sid_string_tos(map.sid));
+               if (type == ID_TYPE_UID) {
+                       wbc_status = wbcSetUidMapping(idval, &sid);
+               } else {
+                       wbc_status = wbcSetGidMapping(idval, &sid);
+               }
+               if (!WBC_ERROR_IS_OK(wbc_status)) {
+                       d_fprintf(stderr, "Could not set mapping of %s %lu to 
sid %s: %s\n",
+                                (type == ID_TYPE_GID) ? "GID" : "UID",
+                                idval, sid_string,
+                                wbcErrorString(wbc_status));
                        continue;
                }
-                        
        }
 
        if (input != stdin) {


-- 
Samba Shared Repository

Reply via email to