summaryrefslogtreecommitdiffstats
path: root/source4/auth
diff options
context:
space:
mode:
authorSamuel Cabrero <scabrero@zentyal.com>2014-06-12 10:39:02 +0200
committerKamen Mazdrashki <kamenim@samba.org>2014-07-08 16:51:09 +0200
commitcaa42ed385dc174d9529407d128424c37cff8e9c (patch)
tree49e6c053924f7dae10edd650b39b8323411f72ea /source4/auth
parentbf7f2b06e8e36710d0f9bf0684e70538e809dd16 (diff)
downloadsamba-caa42ed385dc174d9529407d128424c37cff8e9c.tar.gz
samba-caa42ed385dc174d9529407d128424c37cff8e9c.tar.xz
samba-caa42ed385dc174d9529407d128424c37cff8e9c.zip
s4-auth-krb: Fix talloc access after free in smb_krb5_update_keytab
Change-Id: Iaa168d520f124e0c43c7edd649318f0b8ee25020 Signed-off-by: Samuel Cabrero <scabrero@zentyal.com> Reviewed-by: Kamen Mazdrashki <kamenim@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Kamen Mazdrashki <kamenim@samba.org> Autobuild-Date(master): Tue Jul 8 16:51:09 CEST 2014 on sn-devel-104
Diffstat (limited to 'source4/auth')
-rw-r--r--source4/auth/kerberos/srv_keytab.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/source4/auth/kerberos/srv_keytab.c b/source4/auth/kerberos/srv_keytab.c
index 1fc8b4cfed..bd42316687 100644
--- a/source4/auth/kerberos/srv_keytab.c
+++ b/source4/auth/kerberos/srv_keytab.c
@@ -277,7 +277,8 @@ static krb5_error_code create_keytab(TALLOC_CTX *parent_ctx,
mem_ctx = talloc_new(parent_ctx);
if (!mem_ctx) {
- *error_string = "unable to allocate tmp_ctx for create_keytab";
+ *error_string = talloc_strdup(parent_ctx,
+ "unable to allocate tmp_ctx for create_keytab");
return ENOMEM;
}
@@ -304,6 +305,7 @@ static krb5_error_code create_keytab(TALLOC_CTX *parent_ctx,
salt_princ, kvno, new_secret,
context, enctypes, keytab, error_string);
if (ret) {
+ talloc_steal(parent_ctx, *error_string);
goto done;
}
@@ -311,6 +313,9 @@ static krb5_error_code create_keytab(TALLOC_CTX *parent_ctx,
ret = keytab_add_keys(mem_ctx, principals,
salt_princ, kvno - 1, old_secret,
context, enctypes, keytab, error_string);
+ if (ret) {
+ talloc_steal(parent_ctx, *error_string);
+ }
}
done: