From a71b9135710995a381f0bfaea29fe1a9da93ce20 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 20 Oct 2004 02:10:46 +0000 Subject: r3075: Initialise (and check for intialisation) of the private pointer to ensure we don't segfault on the cleanup from an incomplete schannel bind. Andrew Bartlett (This used to be commit 173f29a1d8db111d5adb258eead5379d681d3bb2) --- source4/libcli/auth/schannel.c | 6 ++++-- source4/librpc/rpc/dcerpc_schannel.c | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source4/libcli/auth/schannel.c b/source4/libcli/auth/schannel.c index aa89e7b84f..2e752f0172 100644 --- a/source4/libcli/auth/schannel.c +++ b/source4/libcli/auth/schannel.c @@ -278,8 +278,10 @@ NTSTATUS schannel_sign_packet(struct schannel_state *state, */ void schannel_end(struct schannel_state **state) { - talloc_destroy((*state)->mem_ctx); - (*state) = NULL; + if (*state) { + talloc_destroy((*state)->mem_ctx); + (*state) = NULL; + } } /* diff --git a/source4/librpc/rpc/dcerpc_schannel.c b/source4/librpc/rpc/dcerpc_schannel.c index 7bb871811a..700a2a40fb 100644 --- a/source4/librpc/rpc/dcerpc_schannel.c +++ b/source4/librpc/rpc/dcerpc_schannel.c @@ -279,9 +279,13 @@ static NTSTATUS dcerpc_schannel_start(struct gensec_security *gensec_security) static NTSTATUS dcerpc_schannel_server_start(struct gensec_security *gensec_security) { NTSTATUS status; + struct dcerpc_schannel_state *dce_schan_state; status = dcerpc_schannel_start(gensec_security); + dce_schan_state = gensec_security->private_data; + dce_schan_state->schannel_state = NULL; + if (!NT_STATUS_IS_OK(status)) { return status; } -- cgit