From: Volker Lendecke Date: Mon, 11 Mar 2019 16:16:34 +0000 (+0100) Subject: libsmb: Use sid_parse() X-Git-Tag: talloc-2.2.0~118 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=afd5d34f5e1d13ba88448b3b94d353aa8361d1a9;p=thirdparty%2Fsamba.git libsmb: Use sid_parse() Signed-off-by: Volker Lendecke Reviewed-by: Andrew Bartlett --- diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c index 09c0d9535f1..1c140ebbd59 100644 --- a/source3/libsmb/clifsinfo.c +++ b/source3/libsmb/clifsinfo.c @@ -29,6 +29,7 @@ #include "../libcli/smb/smbXcli_base.h" #include "auth/credentials/credentials.h" #include "../librpc/gen_ndr/ndr_security.h" +#include "libcli/security/dom_sid.h" /**************************************************************************** Get UNIX extensions version info. @@ -685,23 +686,9 @@ static void cli_posix_whoami_done(struct tevent_req *subreq) num_rdata -= (p - rdata); for (i = 0; i < state->num_sids; i++) { - size_t sid_size; - DATA_BLOB in = data_blob_const(p, num_rdata); - enum ndr_err_code ndr_err; + ssize_t sid_size = sid_parse(p, num_rdata, &state->sids[i]); - ndr_err = ndr_pull_struct_blob(&in, - state, - &state->sids[i], - (ndr_pull_flags_fn_t)ndr_pull_dom_sid); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - tevent_req_nterror(req, - NT_STATUS_INVALID_NETWORK_RESPONSE); - return; - } - - sid_size = ndr_size_dom_sid(&state->sids[i], 0); - - if (sid_size > num_rdata) { + if ((sid_size == -1) || (sid_size > num_rdata)) { tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE); return;