From: Volker Lendecke Date: Sun, 18 Aug 2024 19:45:58 +0000 (+0200) Subject: libsmb: Make cli_api() static to clirap2.c X-Git-Tag: tdb-1.4.13~1357 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac5713f3b27337c281302e3fc9b5ecf641481c27;p=thirdparty%2Fsamba.git libsmb: Make cli_api() static to clirap2.c Signed-off-by: Volker Lendecke Reviewed-by: Andreas Schneider --- diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index df7c5ebd6c3..8124fc6f6cf 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -35,68 +35,6 @@ #include #include -#define PIPE_LANMAN "\\PIPE\\LANMAN" - -/**************************************************************************** - Call a remote api -****************************************************************************/ - -bool cli_api(struct cli_state *cli, - char *param, int prcnt, int mprcnt, - char *data, int drcnt, int mdrcnt, - char **rparam, unsigned int *rprcnt, - char **rdata, unsigned int *rdrcnt) -{ - NTSTATUS status; - - uint8_t *my_rparam, *my_rdata; - uint32_t num_my_rparam, num_my_rdata; - - status = cli_trans(talloc_tos(), cli, SMBtrans, - PIPE_LANMAN, 0, /* name, fid */ - 0, 0, /* function, flags */ - NULL, 0, 0, /* setup */ - (uint8_t *)param, prcnt, mprcnt, /* Params, length, max */ - (uint8_t *)data, drcnt, mdrcnt, /* Data, length, max */ - NULL, /* recv_flags2 */ - NULL, 0, NULL, /* rsetup */ - &my_rparam, 0, &num_my_rparam, - &my_rdata, 0, &num_my_rdata); - if (!NT_STATUS_IS_OK(status)) { - return false; - } - - /* - * I know this memcpy massively hurts, but there are just tons - * of callers of cli_api that eventually need changing to - * talloc - */ - - *rparam = (char *)smb_memdup(my_rparam, num_my_rparam); - if (*rparam == NULL) { - goto fail; - } - *rprcnt = num_my_rparam; - TALLOC_FREE(my_rparam); - - *rdata = (char *)smb_memdup(my_rdata, num_my_rdata); - if (*rdata == NULL) { - goto fail; - } - *rdrcnt = num_my_rdata; - TALLOC_FREE(my_rdata); - - return true; -fail: - TALLOC_FREE(my_rdata); - TALLOC_FREE(my_rparam); - *rparam = NULL; - *rprcnt = 0; - *rdata = NULL; - *rdrcnt = 0; - return false; -} - /**************************************************************************** Call a NetShareEnum - try and browse available connections on a host. ****************************************************************************/ @@ -136,7 +74,7 @@ NTSTATUS cli_RNetShareEnum( status = cli_trans(talloc_tos(), /* mem_ctx */ cli, /* cli */ SMBtrans, /* cmd */ - PIPE_LANMAN, /* name */ + "\\PIPE\\LANMAN", /* name */ 0, /* fid */ 0, /* function */ 0, /* flags */ @@ -320,7 +258,7 @@ bool cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32_t stype, status = cli_trans(talloc_tos(), /* mem_ctx */ cli, /* cli */ SMBtrans, /* cmd */ - PIPE_LANMAN, /* name */ + "\\PIPE\\LANMAN", /* name */ 0, /* fid */ 0, /* function */ 0, /* flags */ @@ -574,7 +512,7 @@ NTSTATUS cli_oem_change_password(struct cli_state *cli, status = cli_trans(talloc_tos(), /* mem_ctx */ cli, /* cli */ SMBtrans, /* cmd */ - PIPE_LANMAN, /* name */ + "\\PIPE\\LANMAN", /* name */ 0, /* fid */ 0, /* function */ 0, /* flags */ diff --git a/source3/libsmb/clirap.h b/source3/libsmb/clirap.h index 6af93fcc358..7db17362165 100644 --- a/source3/libsmb/clirap.h +++ b/source3/libsmb/clirap.h @@ -29,11 +29,6 @@ struct cli_state; /* The following definitions come from libsmb/clirap.c */ -bool cli_api(struct cli_state *cli, - char *param, int prcnt, int mprcnt, - char *data, int drcnt, int mdrcnt, - char **rparam, unsigned int *rprcnt, - char **rdata, unsigned int *rdrcnt); NTSTATUS cli_RNetShareEnum( struct cli_state *cli, void (*fn)(const char *, uint32_t, const char *, void *), diff --git a/source3/utils/clirap2.c b/source3/utils/clirap2.c index b2e51876afd..b60cbfd4a70 100644 --- a/source3/utils/clirap2.c +++ b/source3/utils/clirap2.c @@ -244,6 +244,66 @@ static char *make_header(char *param, uint16_t apinum, const char *reqfmt, const return param; } +/**************************************************************************** + Call a remote api +****************************************************************************/ + +static bool cli_api(struct cli_state *cli, + char *param, int prcnt, int mprcnt, + char *data, int drcnt, int mdrcnt, + char **rparam, unsigned int *rprcnt, + char **rdata, unsigned int *rdrcnt) +{ + NTSTATUS status; + + uint8_t *my_rparam, *my_rdata; + uint32_t num_my_rparam, num_my_rdata; + + status = cli_trans(talloc_tos(), cli, SMBtrans, + "\\PIPE\\LANMAN", 0, /* name, fid */ + 0, 0, /* function, flags */ + NULL, 0, 0, /* setup */ + (uint8_t *)param, prcnt, mprcnt, /* Params, length, max */ + (uint8_t *)data, drcnt, mdrcnt, /* Data, length, max */ + NULL, /* recv_flags2 */ + NULL, 0, NULL, /* rsetup */ + &my_rparam, 0, &num_my_rparam, + &my_rdata, 0, &num_my_rdata); + if (!NT_STATUS_IS_OK(status)) { + return false; + } + + /* + * I know this memcpy massively hurts, but there are just tons + * of callers of cli_api that eventually need changing to + * talloc + */ + + *rparam = (char *)smb_memdup(my_rparam, num_my_rparam); + if (*rparam == NULL) { + goto fail; + } + *rprcnt = num_my_rparam; + TALLOC_FREE(my_rparam); + + *rdata = (char *)smb_memdup(my_rdata, num_my_rdata); + if (*rdata == NULL) { + goto fail; + } + *rdrcnt = num_my_rdata; + TALLOC_FREE(my_rdata); + + return true; +fail: + TALLOC_FREE(my_rdata); + TALLOC_FREE(my_rparam); + *rparam = NULL; + *rprcnt = 0; + *rdata = NULL; + *rdrcnt = 0; + return false; +} + /**************************************************************************** call a NetGroupDelete - delete user group from remote server ****************************************************************************/