1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

libcli: smb: Add smbXcli_tcon_copy().

Makes a deep copy of a struct smbXcli_tcon *, will
be used later.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12831

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
This commit is contained in:
Jeremy Allison 2017-06-13 16:06:22 -07:00
parent 60cae0a704
commit 655e106858
2 changed files with 34 additions and 0 deletions

View File

@ -6114,6 +6114,38 @@ struct smbXcli_tcon *smbXcli_tcon_create(TALLOC_CTX *mem_ctx)
return tcon;
}
/*
* Return a deep structure copy of a struct smbXcli_tcon *
*/
struct smbXcli_tcon *smbXcli_tcon_copy(TALLOC_CTX *mem_ctx,
const struct smbXcli_tcon *tcon_in)
{
struct smbXcli_tcon *tcon;
tcon = talloc_memdup(mem_ctx, tcon_in, sizeof(struct smbXcli_tcon));
if (tcon == NULL) {
return NULL;
}
/* Deal with the SMB1 strings. */
if (tcon_in->smb1.service != NULL) {
tcon->smb1.service = talloc_strdup(tcon, tcon_in->smb1.service);
if (tcon->smb1.service == NULL) {
TALLOC_FREE(tcon);
return NULL;
}
}
if (tcon->smb1.fs_type != NULL) {
tcon->smb1.fs_type = talloc_strdup(tcon, tcon_in->smb1.fs_type);
if (tcon->smb1.fs_type == NULL) {
TALLOC_FREE(tcon);
return NULL;
}
}
return tcon;
}
void smbXcli_tcon_set_fs_attributes(struct smbXcli_tcon *tcon,
uint32_t fs_attributes)
{

View File

@ -501,6 +501,8 @@ NTSTATUS smb2cli_session_set_channel_key(struct smbXcli_session *session,
NTSTATUS smb2cli_session_encryption_on(struct smbXcli_session *session);
struct smbXcli_tcon *smbXcli_tcon_create(TALLOC_CTX *mem_ctx);
struct smbXcli_tcon *smbXcli_tcon_copy(TALLOC_CTX *mem_ctx,
const struct smbXcli_tcon *tcon_in);
void smbXcli_tcon_set_fs_attributes(struct smbXcli_tcon *tcon,
uint32_t fs_attributes);
uint32_t smbXcli_tcon_get_fs_attributes(struct smbXcli_tcon *tcon);