[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Fri Aug 8 11:02:04 MDT 2014


The branch, master has been updated
       via  0e45b40 s4-auth: Initialize the tokens by default.
       via  abcc290 krb5_wrap: Use com_err in krb5_warnx.
       via  cef0ee2 s4-dsdb/cracknames: free realm from smb_krb5_principal_get_realm().
       via  d9167c3 s3-libads/krb5_setpw: free realm from smb_krb5_principal_get_realm().
       via  496bbd1 lib/krb5_wrap: make sure smb_krb5_principal_get_realm returns a malloced string.
       via  3913961 wscript: Only build gensec_krb5 with heimdal.
      from  1ad71f7 printing: reload printer shares on OpenPrinter

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0e45b4051185ba57de25c1e53cba48b9e5d50c15
Author: Andreas Schneider <asn at samba.org>
Date:   Fri Jul 18 12:57:20 2014 +0200

    s4-auth: Initialize the tokens by default.
    
    Found with valgrind.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Pair-Programmed-With: Guenther Deschner <gd at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Günther Deschner <gd at samba.org>
    Autobuild-Date(master): Fri Aug  8 19:01:56 CEST 2014 on sn-devel-104

commit abcc290e9adf06145133868e608c301a3b60e796
Author: Andreas Schneider <asn at samba.org>
Date:   Tue May 20 14:30:16 2014 +0200

    krb5_wrap: Use com_err in krb5_warnx.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit cef0ee28ecae9b7e3126b7f3739501c4c9802ca2
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 09:46:21 2014 +0200

    s4-dsdb/cracknames: free realm from smb_krb5_principal_get_realm().
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit d9167c3044b9a4ebe0da3d4019eb9fa95242e3b9
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 09:45:32 2014 +0200

    s3-libads/krb5_setpw: free realm from smb_krb5_principal_get_realm().
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 496bbd12b3dd388221334bc02a4cff21ef23b752
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 15 09:44:23 2014 +0200

    lib/krb5_wrap: make sure smb_krb5_principal_get_realm returns a malloced string.
    
    Guenther
    
    Signed-off-by: Guenther Deschner <gd at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 391396154620ddc897bf918abde69c8aea5046c9
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Aug 7 15:28:57 2014 +0200

    wscript: Only build gensec_krb5 with heimdal.
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/krb5_wrap/krb5_samba.c          |   15 ++++++++++-----
 source3/libads/krb5_setpw.c         |    8 +++++---
 source4/auth/gensec/gensec_gssapi.c |    4 +++-
 source4/auth/gensec/wscript_build   |    2 +-
 source4/dsdb/samdb/cracknames.c     |    7 ++++---
 5 files changed, 23 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c
index a3743ae..39926a6 100644
--- a/lib/krb5_wrap/krb5_samba.c
+++ b/lib/krb5_wrap/krb5_samba.c
@@ -25,6 +25,10 @@
 #include "krb5_samba.h"
 #include "lib/util/asn1.h"
 
+#ifdef HAVE_COM_ERR_H
+#include <com_err.h>
+#endif /* HAVE_COM_ERR_H */
+
 #ifndef KRB5_AUTHDATA_WIN2K_PAC
 #define KRB5_AUTHDATA_WIN2K_PAC 128
 #endif
@@ -2297,19 +2301,21 @@ krb5_error_code smb_krb5_make_pac_checksum(TALLOC_CTX *mem_ctx,
  * @param[in] principal		The principal
  * @return pointer to the realm
  *
+ * Caller must free if the return value is not NULL.
+ *
  */
 
 char *smb_krb5_principal_get_realm(krb5_context context,
 				   krb5_const_principal principal)
 {
 #ifdef HAVE_KRB5_PRINCIPAL_GET_REALM /* Heimdal */
-	return discard_const_p(char, krb5_principal_get_realm(context, principal));
+	return strdup(discard_const_p(char, krb5_principal_get_realm(context, principal)));
 #elif defined(krb5_princ_realm) /* MIT */
 	krb5_data *realm;
 	realm = krb5_princ_realm(context, principal);
-	return discard_const_p(char, realm->data);
+	return strndup(realm->data, realm->length);
 #else
-	return NULL;
+#error UNKNOWN_GET_PRINC_REALM_FUNCTIONS
 #endif
 }
 
@@ -2607,8 +2613,7 @@ krb5_error_code krb5_warnx(krb5_context context, const char *fmt, ...)
 	va_list args;
 
 	va_start(args, fmt);
-	DEBUG(1,(fmt, args));
-	DEBUGADD(1,("\n"));
+	com_err_va("kdb_samba", errno, fmt, args);
 	va_end(args);
 
 	return 0;
diff --git a/source3/libads/krb5_setpw.c b/source3/libads/krb5_setpw.c
index d84dd5d..d27e55b 100644
--- a/source3/libads/krb5_setpw.c
+++ b/source3/libads/krb5_setpw.c
@@ -575,7 +575,7 @@ ADS_STATUS ads_krb5_set_password(const char *kdc_host, const char *princ,
 	ADS_STATUS aret;
 	krb5_error_code ret = 0;
 	krb5_context context = NULL;
-	const char *realm = NULL;
+	char *realm = NULL;
 	unsigned int realm_len = 0;
 	krb5_creds creds, *credsp = NULL;
 	krb5_ccache ccache = NULL;
@@ -615,7 +615,7 @@ ADS_STATUS ads_krb5_set_password(const char *kdc_host, const char *princ,
 				   &creds.server,
 				   realm_len,
 				   realm, "kadmin", "changepw", NULL);
-
+	free(realm);
 	ret = krb5_get_credentials(context, 0, ccache, &creds, &credsp);
 	if (ret) {
 		krb5_cc_close(context, ccache);
@@ -692,7 +692,7 @@ static ADS_STATUS ads_krb5_chg_password(const char *kdc_host,
     krb5_get_init_creds_opt opts;
     krb5_creds creds;
     char *chpw_princ = NULL, *password;
-    const char *realm = NULL;
+    char *realm = NULL;
 
     initialize_krb5_error_table();
     ret = krb5_init_context(&context);
@@ -719,10 +719,12 @@ static ADS_STATUS ads_krb5_chg_password(const char *kdc_host,
     /* We have to obtain an INITIAL changepw ticket for changing password */
     if (asprintf(&chpw_princ, "kadmin/changepw@%s", realm) == -1) {
 	krb5_free_context(context);
+	free(realm);
 	DEBUG(1,("ads_krb5_chg_password: asprintf fail\n"));
 	return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
     }
 
+    free(realm);
     password = SMB_STRDUP(oldpw);
     ret = krb5_get_init_creds_password(context, &creds, princ, password,
 					   kerb_prompter, NULL, 
diff --git a/source4/auth/gensec/gensec_gssapi.c b/source4/auth/gensec/gensec_gssapi.c
index fdae2a8..91cbfcd 100644
--- a/source4/auth/gensec/gensec_gssapi.c
+++ b/source4/auth/gensec/gensec_gssapi.c
@@ -425,7 +425,9 @@ static NTSTATUS gensec_gssapi_update(struct gensec_security *gensec_security,
 	NTSTATUS nt_status = NT_STATUS_LOGON_FAILURE;
 	OM_uint32 maj_stat, min_stat;
 	OM_uint32 min_stat2;
-	gss_buffer_desc input_token, output_token;
+	gss_buffer_desc input_token = { 0, NULL };
+	gss_buffer_desc output_token = { 0, NULL };
+
 	gss_OID gss_oid_p = NULL;
 	OM_uint32 time_req = 0;
 	OM_uint32 time_rec = 0;
diff --git a/source4/auth/gensec/wscript_build b/source4/auth/gensec/wscript_build
index df633d4..1a44a90 100755
--- a/source4/auth/gensec/wscript_build
+++ b/source4/auth/gensec/wscript_build
@@ -11,7 +11,7 @@ bld.SAMBA_MODULE('gensec_krb5',
 	init_function='gensec_krb5_init',
 	deps='samba-credentials authkrb5 com_err gensec_util',
 	internal_module=False,
-        enabled=bld.AD_DC_BUILD_IS_ENABLED()
+        enabled=bld.AD_DC_BUILD_IS_ENABLED() and bld.CONFIG_SET('SAMBA4_USES_HEIMDAL')
 	)
 
 
diff --git a/source4/dsdb/samdb/cracknames.c b/source4/dsdb/samdb/cracknames.c
index 5e97efc..7c189d3 100644
--- a/source4/dsdb/samdb/cracknames.c
+++ b/source4/dsdb/samdb/cracknames.c
@@ -56,7 +56,7 @@ static WERROR dns_domain_from_principal(TALLOC_CTX *mem_ctx, struct smb_krb5_con
 	krb5_error_code ret;
 	krb5_principal principal;
 	/* perhaps it's a principal with a realm, so return the right 'domain only' response */
-	const char *realm;
+	char *realm;
 	ret = krb5_parse_name_flags(smb_krb5_context->krb5_context, name, 
 				    KRB5_PRINCIPAL_PARSE_REQUIRE_REALM, &principal);
 	if (ret) {
@@ -64,11 +64,11 @@ static WERROR dns_domain_from_principal(TALLOC_CTX *mem_ctx, struct smb_krb5_con
 		return WERR_OK;
 	}
 
-	/* This isn't an allocation assignemnt, so it is free'ed with the krb5_free_principal */
 	realm = smb_krb5_principal_get_realm(smb_krb5_context->krb5_context, principal);
 
 	info1->dns_domain_name	= talloc_strdup(mem_ctx, realm);
 	krb5_free_principal(smb_krb5_context->krb5_context, principal);
+	free(realm);
 
 	W_ERROR_HAVE_NO_MEMORY(info1->dns_domain_name);
 
@@ -271,7 +271,7 @@ static WERROR DsCrackNameUPN(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
 	const char *result_filter = NULL;
 	krb5_error_code ret;
 	krb5_principal principal;
-	const char *realm;
+	char *realm;
 	char *unparsed_name_short;
 	const char *domain_attrs[] = { NULL };
 	struct ldb_result *domain_res = NULL;
@@ -301,6 +301,7 @@ static WERROR DsCrackNameUPN(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx,
 			     ldb_binary_encode_string(mem_ctx, realm),
 			     LDB_OID_COMPARATOR_AND,
 			     SYSTEM_FLAG_CR_NTDS_DOMAIN);
+	free(realm);
 
 	if (ldb_ret != LDB_SUCCESS) {
 		DEBUG(2, ("DsCrackNameUPN domain ref search failed: %s\n", ldb_errstring(sam_ctx)));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list