]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: winbind: Convert idmap to use file_ploadv_send().
authorJeremy Allison <jra@samba.org>
Sat, 18 May 2019 18:25:01 +0000 (11:25 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 24 May 2019 19:00:05 +0000 (19:00 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13964

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/winbindd/idmap_script.c

index e4de1a09ba0b45eceb40e976b803de002f12c3df..aa3a2e003966f32145e25187b6bf2548c3a9e5e7 100644 (file)
@@ -63,7 +63,7 @@ struct idmap_script_context {
  */
 
 struct idmap_script_xid2sid_state {
-       const char *syscmd;
+       char **argl;
        size_t idx;
        uint8_t *out;
 };
@@ -101,13 +101,32 @@ static struct tevent_req *idmap_script_xid2sid_send(
                    return tevent_req_post(req, ev);
        }
 
-       state->syscmd = talloc_asprintf(state, "%s IDTOSID %cID %lu", script, key,
-                                       (unsigned long)xid.id);
-       if (tevent_req_nomem(state->syscmd, req)) {
+       state->argl = talloc_zero_array(state,
+                                       char *,
+                                       5);
+       if (tevent_req_nomem(state->argl, req)) {
                return tevent_req_post(req, ev);
        }
+       state->argl[0] = talloc_strdup(state->argl, script);
+       if (tevent_req_nomem(state->argl[0], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[1] = talloc_strdup(state->argl, "IDTOSID");
+       if (tevent_req_nomem(state->argl[1], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[2] = talloc_asprintf(state->argl, "%cID", key);
+       if (tevent_req_nomem(state->argl[2], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[3] = talloc_asprintf(state->argl, "%lu",
+                               (unsigned long)xid.id);
+       if (tevent_req_nomem(state->argl[3], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[4] = NULL;
 
-       subreq = file_pload_send(state, ev, state->syscmd, 1024);
+       subreq = file_ploadv_send(state, ev, state->argl, 1024);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }
@@ -320,7 +339,7 @@ static NTSTATUS idmap_script_unixids_to_sids(struct idmap_domain *dom,
 }
 
 struct idmap_script_sid2xid_state {
-       const char *syscmd;
+       char **argl;
        size_t idx;
        uint8_t *out;
 };
@@ -342,16 +361,28 @@ static struct tevent_req *idmap_script_sid2xid_send(
        }
        state->idx = idx;
 
-       state->syscmd = talloc_asprintf(
-               state,
-               "%s SIDTOID %s",
-               script,
-               dom_sid_str_buf(sid, &sidbuf));
-       if (tevent_req_nomem(state->syscmd, req)) {
+       state->argl = talloc_zero_array(state,
+                                       char *,
+                                       4);
+       if (tevent_req_nomem(state->argl, req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[0] = talloc_strdup(state->argl, script);
+       if (tevent_req_nomem(state->argl[0], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[1] = talloc_strdup(state->argl, "SIDTOID");
+       if (tevent_req_nomem(state->argl[1], req)) {
+               return tevent_req_post(req, ev);
+       }
+       state->argl[2] = talloc_asprintf(state->argl, "%s",
+                       dom_sid_str_buf(sid, &sidbuf));
+       if (tevent_req_nomem(state->argl[2], req)) {
                return tevent_req_post(req, ev);
        }
+       state->argl[3] = NULL;
 
-       subreq = file_pload_send(state, ev, state->syscmd, 1024);
+       subreq = file_ploadv_send(state, ev, state->argl, 1024);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
        }