From cce19c51625e2d73a541bbdfcc549f5a63c26abe Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 20 Jul 2010 14:59:31 -0700 Subject: Fix one more data_blob -> data_blob_talloc. Move away from implicit NULL context tallocs. Jeremy. --- source3/libsmb/cliconnect.c | 4 ++-- source3/libsmb/clifsinfo.c | 13 +++++++------ source3/libsmb/clispnego.c | 12 +++++++----- 3 files changed, 16 insertions(+), 13 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c index 86338d0ef3..86448ff6b3 100644 --- a/source3/libsmb/cliconnect.c +++ b/source3/libsmb/cliconnect.c @@ -857,7 +857,7 @@ static struct tevent_req *cli_session_setup_kerberos_send( * Ok, this is cheating: spnego_gen_krb5_negTokenInit can block if * we have to acquire a ticket. To be fixed later :-) */ - rc = spnego_gen_krb5_negTokenInit(principal, 0, &state->negTokenTarg, + rc = spnego_gen_krb5_negTokenInit(state, principal, 0, &state->negTokenTarg, &state->session_key_krb5, 0, NULL); if (rc) { DEBUG(1, ("cli_session_setup_kerberos: " @@ -1033,7 +1033,7 @@ static struct tevent_req *cli_session_setup_ntlmssp_send( goto fail; } - state->blob_out = spnego_gen_negTokenInit(OIDs_ntlm, &blob_out, NULL); + state->blob_out = spnego_gen_negTokenInit(state, OIDs_ntlm, &blob_out, NULL); data_blob_free(&blob_out); subreq = cli_sesssetup_blob_send(state, ev, cli, state->blob_out); diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c index 3c8e5442ce..aa7d1fb9ad 100644 --- a/source3/libsmb/clifsinfo.c +++ b/source3/libsmb/clifsinfo.c @@ -716,7 +716,8 @@ NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli, Get client gss blob to send to a server. ******************************************************************************/ -static NTSTATUS make_cli_gss_blob(struct smb_trans_enc_state *es, +static NTSTATUS make_cli_gss_blob(TALLOC_CTX *ctx, + struct smb_trans_enc_state *es, const char *service, const char *host, NTSTATUS status_in, @@ -798,10 +799,10 @@ static NTSTATUS make_cli_gss_blob(struct smb_trans_enc_state *es, status = NT_STATUS_ACCESS_DENIED; } - blob_out = data_blob(tok_out.value, tok_out.length); + blob_out = data_blob_talloc(ctx, tok_out.value, tok_out.length); /* Wrap in an SPNEGO wrapper */ - *p_blob_out = spnego_gen_negTokenInit(krb_mechs, &blob_out, NULL); + *p_blob_out = spnego_gen_negTokenInit(ctx, krb_mechs, &blob_out, NULL); fail: @@ -837,10 +838,10 @@ NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli) strlower_m(fqdn); servicename = "cifs"; - status = make_cli_gss_blob(es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send); + status = make_cli_gss_blob(talloc_tos(), es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send); if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED)) { servicename = "host"; - status = make_cli_gss_blob(es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send); + status = make_cli_gss_blob(talloc_tos(), es, servicename, fqdn, NT_STATUS_OK, blob_recv, &blob_send); if (!NT_STATUS_EQUAL(status,NT_STATUS_MORE_PROCESSING_REQUIRED)) { goto fail; } @@ -853,7 +854,7 @@ NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli) es->enc_ctx_num = SVAL(param_out.data, 0); } data_blob_free(&blob_send); - status = make_cli_gss_blob(es, servicename, fqdn, status, blob_recv, &blob_send); + status = make_cli_gss_blob(talloc_tos(), es, servicename, fqdn, status, blob_recv, &blob_send); } while (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)); data_blob_free(&blob_recv); diff --git a/source3/libsmb/clispnego.c b/source3/libsmb/clispnego.c index 0935041a34..d5867120ea 100644 --- a/source3/libsmb/clispnego.c +++ b/source3/libsmb/clispnego.c @@ -29,7 +29,8 @@ OIDs (the mechanisms) a blob, and a principal name string */ -DATA_BLOB spnego_gen_negTokenInit(const char *OIDs[], +DATA_BLOB spnego_gen_negTokenInit(TALLOC_CTX *ctx, + const char *OIDs[], DATA_BLOB *psecblob, const char *principal) { @@ -81,7 +82,7 @@ DATA_BLOB spnego_gen_negTokenInit(const char *OIDs[], DEBUG(1,("Failed to build negTokenInit at offset %d\n", (int)data->ofs)); } - ret = data_blob(data->data, data->length); + ret = data_blob_talloc(ctx, data->data, data->length); asn1_free(data); return ret; @@ -289,8 +290,9 @@ bool spnego_parse_krb5_wrap(DATA_BLOB blob, DATA_BLOB *ticket, uint8 tok_id[2]) generate a SPNEGO krb5 negTokenInit packet, ready for a EXTENDED_SECURITY kerberos session setup */ -int spnego_gen_krb5_negTokenInit(const char *principal, int time_offset, - DATA_BLOB *targ, +int spnego_gen_krb5_negTokenInit(TALLOC_CTX *ctx, + const char *principal, int time_offset, + DATA_BLOB *targ, DATA_BLOB *session_key_krb5, uint32 extra_ap_opts, time_t *expire_time) { @@ -310,7 +312,7 @@ int spnego_gen_krb5_negTokenInit(const char *principal, int time_offset, tkt_wrapped = spnego_gen_krb5_wrap(tkt, TOK_ID_KRB_AP_REQ); /* and wrap that in a shiny SPNEGO wrapper */ - *targ = spnego_gen_negTokenInit(krb_mechs, &tkt_wrapped, NULL); + *targ = spnego_gen_negTokenInit(ctx, krb_mechs, &tkt_wrapped, NULL); data_blob_free(&tkt_wrapped); data_blob_free(&tkt); -- cgit