diff options
author | Andrew Bartlett <abartlet@samba.org> | 2004-10-20 02:10:46 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:01:56 -0500 |
commit | a71b9135710995a381f0bfaea29fe1a9da93ce20 (patch) | |
tree | 45e2a9fa2fdc5b4fb5074dc3ee93a2e25f88d549 | |
parent | 1ee3a7419e04b0d7574792ceebecc89b4a849a73 (diff) | |
download | samba-a71b9135710995a381f0bfaea29fe1a9da93ce20.tar.gz samba-a71b9135710995a381f0bfaea29fe1a9da93ce20.tar.bz2 samba-a71b9135710995a381f0bfaea29fe1a9da93ce20.zip |
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)
-rw-r--r-- | source4/libcli/auth/schannel.c | 6 | ||||
-rw-r--r-- | 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; } |