diff options
author | Jeremy Allison <jra@samba.org> | 2019-05-18 11:25:01 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-05-24 19:00:05 +0000 |
commit | 449d49946b295f574e1fed83b5a5ffbf1c1b1e30 (patch) | |
tree | 6e7e1244a07f1e520297d83a052edb155267110a /source3 | |
parent | 61054e53f53e5884902b566b1f9b454a3ff4741f (diff) | |
download | samba-449d49946b295f574e1fed83b5a5ffbf1c1b1e30.tar.gz |
s3: winbind: Convert idmap to use file_ploadv_send().
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>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/winbindd/idmap_script.c | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/source3/winbindd/idmap_script.c b/source3/winbindd/idmap_script.c index e4de1a09ba0..aa3a2e00396 100644 --- a/source3/winbindd/idmap_script.c +++ b/source3/winbindd/idmap_script.c @@ -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); } |