summaryrefslogtreecommitdiff
path: root/source4/libcli/auth
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-09-24 06:51:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:59:08 -0500
commitf5db8edc97a3dcbbab7a33a41b54fc17902872ea (patch)
treedf18c76200544592d0f5a41a39c1d13a41729f1e /source4/libcli/auth
parenta1ed65e8edd80cff405f91c5ab93f53e3afb2479 (diff)
downloadsamba-f5db8edc97a3dcbbab7a33a41b54fc17902872ea.tar.gz
samba-f5db8edc97a3dcbbab7a33a41b54fc17902872ea.tar.bz2
samba-f5db8edc97a3dcbbab7a33a41b54fc17902872ea.zip
r2587: fixed a couple of authentication memory leaks. There are more to be
fixed - I'll commit a little test suite soon. (This used to be commit 5b967c1cbb9831f7f2c6c6187f9e8e6dcc284497)
Diffstat (limited to 'source4/libcli/auth')
-rw-r--r--source4/libcli/auth/spnego.c2
-rw-r--r--source4/libcli/auth/spnego_parse.c4
2 files changed, 6 insertions, 0 deletions
diff --git a/source4/libcli/auth/spnego.c b/source4/libcli/auth/spnego.c
index 696240f8d6..bbf8f86676 100644
--- a/source4/libcli/auth/spnego.c
+++ b/source4/libcli/auth/spnego.c
@@ -528,6 +528,7 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA
nt_status = gensec_set_target_principal(gensec_security,
spnego.negTokenInit.targetPrincipal);
if (!NT_STATUS_IS_OK(nt_status)) {
+ spnego_free_data(&spnego);
return nt_status;
}
}
@@ -540,6 +541,7 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA
&unwrapped_out);
if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED) && !NT_STATUS_IS_OK(nt_status)) {
+ spnego_free_data(&spnego);
return nt_status;
}
diff --git a/source4/libcli/auth/spnego_parse.c b/source4/libcli/auth/spnego_parse.c
index 047d17ce5a..20b766a4e2 100644
--- a/source4/libcli/auth/spnego_parse.c
+++ b/source4/libcli/auth/spnego_parse.c
@@ -54,6 +54,10 @@ static BOOL read_negTokenInit(ASN1_DATA *asn1, struct spnego_negTokenInit *token
talloc_realloc(token->mechTypes, (i + 2) *
sizeof(*token->mechTypes));
asn1_read_OID(asn1, token->mechTypes + i);
+ if (token->mechTypes[i]) {
+ talloc_steal(token->mechTypes,
+ token->mechTypes[i]);
+ }
}
token->mechTypes[i] = NULL;