Revert "libwbclient4: Add wbc_sids_to_xids"
[samba.git] / source4 / libcli / wbclient / wbclient.c
index 5b95be125934ad3b2932059890a995e73ade402f..4f50c106947b42b785f200b74dbe8e9efbe66161 100644 (file)
 #include "includes.h"
 #include <tevent.h>
 #include "libcli/wbclient/wbclient.h"
-#include "nsswitch/wb_reqtrans.h"
-#include "system/network.h"
-#include "libcli/util/error.h"
-#include "libcli/security/dom_sid.h"
 
 /**
  * Initialize the wbclient context, talloc_free() when done.
@@ -198,166 +194,3 @@ NTSTATUS wbc_xids_to_sids_recv(struct composite_context *ctx,
        return status;
 }
 
-static int wb_simple_trans(struct tevent_context *ev, int fd,
-                          struct winbindd_request *wb_req,
-                          TALLOC_CTX *mem_ctx,
-                          struct winbindd_response **resp, int *err)
-{
-       struct tevent_req *req;
-       bool polled;
-       int ret;
-
-       req = wb_simple_trans_send(ev, ev, NULL, fd, wb_req);
-       if (req == NULL) {
-               *err = ENOMEM;
-               return -1;
-       }
-
-       polled = tevent_req_poll(req, ev);
-       if (!polled) {
-               *err = errno;
-               DEBUG(10, ("tevent_req_poll returned %s\n",
-                          strerror(*err)));
-               return -1;
-       }
-
-       ret = wb_simple_trans_recv(req, mem_ctx, resp, err);
-       TALLOC_FREE(req);
-       return ret;
-}
-
-static const char *winbindd_socket_dir(void)
-{
-#ifdef SOCKET_WRAPPER
-       const char *env_dir;
-
-       env_dir = getenv(WINBINDD_SOCKET_DIR_ENVVAR);
-       if (env_dir) {
-               return env_dir;
-       }
-#endif
-
-       return WINBINDD_SOCKET_DIR;
-}
-
-static int winbindd_pipe_sock(void)
-{
-       struct sockaddr_un sunaddr = {};
-       int ret, fd;
-       char *path;
-
-       ret = asprintf(&path, "%s/%s", winbindd_socket_dir(),
-                      WINBINDD_SOCKET_NAME);
-       if (ret == -1) {
-               errno = ENOMEM;
-               return -1;
-       }
-       sunaddr.sun_family = AF_UNIX;
-       strlcpy(sunaddr.sun_path, path, sizeof(sunaddr.sun_path));
-       free(path);
-
-       fd = socket(AF_UNIX, SOCK_STREAM, 0);
-       if (fd == -1) {
-               return -1;
-       }
-
-       ret = connect(fd, (struct sockaddr *)&sunaddr, sizeof(sunaddr));
-       if (ret == -1) {
-               int err = errno;
-               close(fd);
-               errno = err;
-               return -1;
-       }
-
-       return fd;
-}
-
-NTSTATUS wbc_sids_to_xids(struct tevent_context *ev, struct id_map *ids,
-                         uint32_t count)
-{
-       TALLOC_CTX *mem_ctx;
-       struct winbindd_request req = {};
-       struct winbindd_response *resp;
-       uint32_t i;
-       int fd, ret, err;
-       char *sids, *p;
-       size_t sidslen;
-
-       fd = winbindd_pipe_sock();
-       if (fd == -1) {
-               return map_nt_error_from_unix_common(errno);
-       }
-
-       mem_ctx = talloc_new(NULL);
-       if (mem_ctx == NULL) {
-               close(fd);
-               return NT_STATUS_NO_MEMORY;
-       }
-
-       sidslen = count * (DOM_SID_STR_BUFLEN + 1);
-
-       sids = talloc_array(mem_ctx, char, sidslen);
-       if (sids == NULL) {
-               close(fd);
-               TALLOC_FREE(mem_ctx);
-               return NT_STATUS_NO_MEMORY;
-       }
-
-       p = sids;
-       for (i=0; i<count; i++) {
-               p += dom_sid_string_buf(ids[i].sid, p, sidslen - (p - sids));
-               *p++ = '\n';
-       }
-       *p++ = '\0';
-
-       DEBUG(10, ("sids=\n%s", sids));
-
-       req.length = sizeof(struct winbindd_request);
-       req.cmd = WINBINDD_SIDS_TO_XIDS;
-       req.pid = getpid();
-       req.extra_data.data = sids;
-       req.extra_len = sidslen;
-
-       ret = wb_simple_trans(ev, fd, &req, mem_ctx, &resp, &err);
-       if (ret == -1) {
-               return map_nt_error_from_unix_common(err);
-       }
-
-       close(fd);
-
-       p = resp->extra_data.data;
-
-       for (i=0; i<count; i++) {
-               struct unixid *id = &ids[i].xid;
-               char *q;
-
-               switch (p[0]) {
-               case 'U':
-                       id->type = ID_TYPE_UID;
-                       id->id = strtoul(p+1, &q, 10);
-                       break;
-               case 'G':
-                       id->type = ID_TYPE_GID;
-                       id->id = strtoul(p+1, &q, 10);
-                       break;
-               case 'B':
-                       id->type = ID_TYPE_BOTH;
-                       id->id = strtoul(p+1, &q, 10);
-                       break;
-               default:
-                       id->type = ID_TYPE_NOT_SPECIFIED;
-                       id->id = UINT32_MAX;
-                       q = strchr(p, '\n');
-                       break;
-               };
-               ids[i].status = ID_MAPPED;
-
-               if (q == NULL || q[0] != '\n') {
-                       TALLOC_FREE(mem_ctx);
-                       return NT_STATUS_INTERNAL_ERROR;
-               }
-               p = q+1;
-       }
-
-       return NT_STATUS_OK;
-}