From: Volker Lendecke Date: Sun, 18 Aug 2024 10:37:13 +0000 (+0200) Subject: libsmb: Fix cli_oem_change_password() X-Git-Tag: tdb-1.4.13~1367 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=78a1e2817d6330b5d2a2c1821404f2a2d0f8ba49;p=thirdparty%2Fsamba.git libsmb: Fix cli_oem_change_password() "(rdrcnt < 2)" was wrong, we don't look at rdata but at rparam. Use "min_rparam" to cli_trans and the fact that if that succeeds "rparam" is not NULL. Signed-off-by: Volker Lendecke Reviewed-by: Andreas Schneider --- diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c index 32cbe6126bd..c1293370d47 100644 --- a/source3/libsmb/clirap.c +++ b/source3/libsmb/clirap.c @@ -458,8 +458,7 @@ bool cli_oem_change_password(struct cli_state *cli, const char *user, const char unsigned int data_len; unsigned int param_len = 0; uint8_t *rparam = NULL; - uint8_t *rdata = NULL; - uint32_t rprcnt, rdrcnt; + uint32_t rprcnt; gnutls_cipher_hd_t cipher_hnd = NULL; gnutls_datum_t old_pw_key = { .data = old_pw_hash, @@ -549,27 +548,17 @@ bool cli_oem_change_password(struct cli_state *cli, const char *user, const char 0, /* min_rsetup */ NULL, /* num_rsetup */ &rparam, /* rparam */ - 0, /* min_rparam */ + 2, /* min_rparam */ &rprcnt, /* num_rparam */ - &rdata, /* rdata */ + NULL, /* rdata */ 0, /* min_rdata */ - &rdrcnt); /* num_rdata */ + NULL); /* num_rdata */ if (!NT_STATUS_IS_OK(status)) { return false; } + cli->rap_error = PULL_LE_U16(rparam, 0); - if (rdrcnt < 2) { - cli->rap_error = ERRbadformat; - goto done; - } - - if (rparam) { - cli->rap_error = SVAL(rparam,0); - } - -done: TALLOC_FREE(rparam); - TALLOC_FREE(rdata); return (cli->rap_error == 0); }