From: Volker Lendecke Date: Thu, 29 Sep 2022 10:40:45 +0000 (+0200) Subject: libsmb: Convert cli_readlink() to cli_fsctl_send/recv X-Git-Tag: talloc-2.4.0~784 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aaacbd0f2a95245863fa90bcd0fdbed68f590c7a;p=thirdparty%2Fsamba.git libsmb: Convert cli_readlink() to cli_fsctl_send/recv Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/source3/libsmb/clisymlink.c b/source3/libsmb/clisymlink.c index 90f48a2029d..eda5aa3a729 100644 --- a/source3/libsmb/clisymlink.c +++ b/source3/libsmb/clisymlink.c @@ -299,25 +299,14 @@ static void cli_readlink_opened(struct tevent_req *subreq) return; } - if (smbXcli_conn_protocol(state->cli->conn) >= PROTOCOL_SMB2_02) { - subreq = cli_smb2_get_reparse_point_fnum_send(state, - state->ev, - state->cli, - state->fnum); - } else { - SIVAL(state->setup, 0, FSCTL_GET_REPARSE_POINT); - SSVAL(state->setup, 4, state->fnum); - SCVAL(state->setup, 6, 1); /* IsFcntl */ - SCVAL(state->setup, 7, 0); /* IsFlags */ - - subreq = cli_trans_send(state, state->ev, state->cli, - 0, SMBnttrans, - NULL, -1, /* name, fid */ - NT_TRANSACT_IOCTL, 0, - state->setup, 4, 0, /* setup */ - NULL, 0, 0, /* param */ - NULL, 0, 16384); /* data */ - } + subreq = cli_fsctl_send( + state, + state->ev, + state->cli, + state->fnum, + FSCTL_GET_REPARSE_POINT, + NULL, + 65536); if (tevent_req_nomem(subreq, req)) { return; @@ -331,26 +320,16 @@ static void cli_readlink_got_reparse_data(struct tevent_req *subreq) subreq, struct tevent_req); struct cli_readlink_state *state = tevent_req_data( req, struct cli_readlink_state); + DATA_BLOB out = { .data = NULL, }; - if (smbXcli_conn_protocol(state->cli->conn) >= PROTOCOL_SMB2_02) { - DATA_BLOB recv_data; - state->get_reparse_status = - cli_smb2_get_reparse_point_fnum_recv(subreq, - state, - &recv_data); - if (NT_STATUS_IS_OK(state->get_reparse_status)) { - state->data = recv_data.data; - state->num_data = recv_data.length; - } - } else { - state->get_reparse_status = cli_trans_recv( - subreq, state, NULL, - NULL, 0, NULL, /* rsetup */ - NULL, 0, NULL, /* rparam */ - &state->data, 20, &state->num_data); /* rdata */ - } + state->get_reparse_status = cli_fsctl_recv(subreq, state, &out); TALLOC_FREE(subreq); + if (NT_STATUS_IS_OK(state->get_reparse_status)) { + state->data = out.data; + state->num_data = out.length; + } + subreq = cli_close_send(state, state->ev, state->cli, state->fnum); if (tevent_req_nomem(subreq, req)) { return;