[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Wed Aug 5 02:09:05 UTC 2015


The branch, master has been updated
       via  78075cf waf: Add talloc as a dependency
       via  38d7617 sdb: Assert if the HDB flags will change
       via  ab08575 hdb-samba: Translate SDB errors to HDB errors
      from  a3af166 s4-torture: add test for CLUSCTL_NODE_GET_ID in clusapi_NodeControl.

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


- Log -----------------------------------------------------------------
commit 78075cfcda6e6899f6a7e147b8d35ec258c4bb7d
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Aug 4 12:00:33 2015 +0200

    waf: Add talloc as a dependency
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Wed Aug  5 04:08:30 CEST 2015 on sn-devel-104

commit 38d76178026761a871243c436d905664d2b6f57b
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Aug 3 13:10:28 2015 +0200

    sdb: Assert if the HDB flags will change
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit ab0857540551648af28b6d1079d539e9b1b35e00
Author: Andreas Schneider <asn at samba.org>
Date:   Tue Aug 4 11:35:45 2015 +0200

    hdb-samba: Translate SDB errors to HDB errors
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 source4/kdc/hdb-samba4.c  | 123 ++++++++++++++++++++++++++++++++++++----------
 source4/kdc/sdb_to_hdb.c  |  36 +++++++++++++-
 source4/kdc/wscript_build |   4 +-
 3 files changed, 133 insertions(+), 30 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c
index c8f26e0..14a974a 100644
--- a/source4/kdc/hdb-samba4.c
+++ b/source4/kdc/hdb-samba4.c
@@ -95,24 +95,33 @@ static krb5_error_code hdb_samba4_fetch_kvno(krb5_context context, HDB *db,
 	kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
 					   struct samba_kdc_db_context);
 
-	code = samba_kdc_fetch(context,
-			       kdc_db_ctx,
-			       principal,
-			       flags,
-			       kvno,
-			       &sdb_entry_ex);
-	/*
-	 * If SDB_ERR_WRONG_REALM is returned we need to process the sdb_entry
-	 * to fill the principal in the HDB entry.
-	 */
-	if (code != 0 && code != SDB_ERR_WRONG_REALM) {
-		return code;
+	ret = samba_kdc_fetch(context,
+			      kdc_db_ctx,
+			      principal,
+			      flags,
+			      kvno,
+			      &sdb_entry_ex);
+	switch (ret) {
+	case 0:
+		code = 0;
+		break;
+	case SDB_ERR_WRONG_REALM:
+		/*
+		 * If SDB_ERR_WRONG_REALM is returned we need to process the
+		 * sdb_entry to fill the principal in the HDB entry.
+		 */
+		code = HDB_ERR_WRONG_REALM;
+		break;
+	case SDB_ERR_NOENTRY:
+		return HDB_ERR_NOENTRY;
+	default:
+		return HDB_ERR_NOT_FOUND_HERE;
 	}
 
 	ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry_ex);
 	sdb_free_entry(&sdb_entry_ex);
 
-	if (code == 0 && ret != 0) {
+	if (code != 0 && ret != 0) {
 		code = ret;
 	}
 
@@ -130,8 +139,15 @@ static krb5_error_code hdb_samba4_firstkey(krb5_context context, HDB *db, unsign
 					   struct samba_kdc_db_context);
 
 	ret = samba_kdc_firstkey(context, kdc_db_ctx, &sdb_entry_ex);
-	if (ret) {
-		return ret;
+	switch (ret) {
+	case 0:
+		break;
+	case SDB_ERR_WRONG_REALM:
+		return HDB_ERR_WRONG_REALM;
+	case SDB_ERR_NOENTRY:
+		return HDB_ERR_NOENTRY;
+	default:
+		return HDB_ERR_NOT_FOUND_HERE;
 	}
 
 	ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
@@ -150,8 +166,15 @@ static krb5_error_code hdb_samba4_nextkey(krb5_context context, HDB *db, unsigne
 					   struct samba_kdc_db_context);
 
 	ret = samba_kdc_nextkey(context, kdc_db_ctx, &sdb_entry_ex);
-	if (ret) {
-		return ret;
+	switch (ret) {
+	case 0:
+		break;
+	case SDB_ERR_WRONG_REALM:
+		return HDB_ERR_WRONG_REALM;
+	case SDB_ERR_NOENTRY:
+		return HDB_ERR_NOENTRY;
+	default:
+		return HDB_ERR_NOT_FOUND_HERE;
 	}
 
 	ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
@@ -172,15 +195,31 @@ hdb_samba4_check_constrained_delegation(krb5_context context, HDB *db,
 {
 	struct samba_kdc_db_context *kdc_db_ctx;
 	struct samba_kdc_entry *skdc_entry;
+	krb5_error_code ret;
 
 	kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
 					   struct samba_kdc_db_context);
 	skdc_entry = talloc_get_type_abort(entry->ctx,
 					   struct samba_kdc_entry);
 
-	return samba_kdc_check_s4u2proxy(context, kdc_db_ctx,
-					 skdc_entry,
-					 target_principal);
+	ret = samba_kdc_check_s4u2proxy(context, kdc_db_ctx,
+					skdc_entry,
+					target_principal);
+	switch (ret) {
+	case 0:
+		break;
+	case SDB_ERR_WRONG_REALM:
+		ret = HDB_ERR_WRONG_REALM;
+		break;
+	case SDB_ERR_NOENTRY:
+		ret = HDB_ERR_NOENTRY;
+		break;
+	default:
+		ret = HDB_ERR_NOT_FOUND_HERE;
+		break;
+	}
+
+	return ret;
 }
 
 static krb5_error_code
@@ -190,15 +229,31 @@ hdb_samba4_check_pkinit_ms_upn_match(krb5_context context, HDB *db,
 {
 	struct samba_kdc_db_context *kdc_db_ctx;
 	struct samba_kdc_entry *skdc_entry;
+	krb5_error_code ret;
 
 	kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
 					   struct samba_kdc_db_context);
 	skdc_entry = talloc_get_type_abort(entry->ctx,
 					   struct samba_kdc_entry);
 
-	return samba_kdc_check_pkinit_ms_upn_match(context, kdc_db_ctx,
-						   skdc_entry,
-						   certificate_principal);
+	ret = samba_kdc_check_pkinit_ms_upn_match(context, kdc_db_ctx,
+						  skdc_entry,
+						  certificate_principal);
+	switch (ret) {
+	case 0:
+		break;
+	case SDB_ERR_WRONG_REALM:
+		ret = HDB_ERR_WRONG_REALM;
+		break;
+	case SDB_ERR_NOENTRY:
+		ret = HDB_ERR_NOENTRY;
+		break;
+	default:
+		ret = HDB_ERR_NOT_FOUND_HERE;
+		break;
+	}
+
+	return ret;
 }
 
 static krb5_error_code
@@ -208,15 +263,31 @@ hdb_samba4_check_s4u2self(krb5_context context, HDB *db,
 {
 	struct samba_kdc_db_context *kdc_db_ctx;
 	struct samba_kdc_entry *skdc_entry;
+	krb5_error_code ret;
 
 	kdc_db_ctx = talloc_get_type_abort(db->hdb_db,
 					   struct samba_kdc_db_context);
 	skdc_entry = talloc_get_type_abort(entry->ctx,
 					   struct samba_kdc_entry);
 
-	return samba_kdc_check_s4u2self(context, kdc_db_ctx,
-				        skdc_entry,
-				        target_principal);
+	ret = samba_kdc_check_s4u2self(context, kdc_db_ctx,
+				       skdc_entry,
+				       target_principal);
+	switch (ret) {
+	case 0:
+		break;
+	case SDB_ERR_WRONG_REALM:
+		ret = HDB_ERR_WRONG_REALM;
+		break;
+	case SDB_ERR_NOENTRY:
+		ret = HDB_ERR_NOENTRY;
+		break;
+	default:
+		ret = HDB_ERR_NOT_FOUND_HERE;
+		break;
+	}
+
+	return ret;
 }
 
 static krb5_error_code hdb_samba4_auth_status(krb5_context context, HDB *db,
diff --git a/source4/kdc/sdb_to_hdb.c b/source4/kdc/sdb_to_hdb.c
index e11d616..7ac0b0e 100644
--- a/source4/kdc/sdb_to_hdb.c
+++ b/source4/kdc/sdb_to_hdb.c
@@ -31,8 +31,40 @@
 static void sdb_flags_to_hdb_flags(const struct SDBFlags *s,
 				   HDBFlags *h)
 {
-	/* as long as we are a 100% copy... */
-	memcpy(h, s, sizeof(*s));
+	SMB_ASSERT(sizeof(struct SDBFlags) == sizeof(HDBFlags));
+
+	h->initial = s->initial;
+	h->forwardable = s->forwardable;
+	h->proxiable = s->proxiable;
+	h->renewable = s->renewable;
+	h->postdate = s->postdate;
+	h->server = s->server;
+	h->client = s->client;
+	h->invalid = s->invalid;
+	h->require_preauth = s->require_preauth;
+	h->change_pw = s->change_pw;
+	h->require_hwauth = s->require_hwauth;
+	h->ok_as_delegate = s->ok_as_delegate;
+	h->user_to_user = s->user_to_user;
+	h->immutable = s->immutable;
+	h->trusted_for_delegation = s->trusted_for_delegation;
+	h->allow_kerberos4 = s->allow_kerberos4;
+	h->allow_digest = s->allow_digest;
+	h->locked_out = s->locked_out;
+	h->_unused18 = s->_unused18;
+	h->_unused19 = s->_unused19;
+	h->_unused20 = s->_unused20;
+	h->_unused21 = s->_unused21;
+	h->_unused22 = s->_unused22;
+	h->_unused23 = s->_unused23;
+	h->_unused24 = s->_unused24;
+	h->_unused25 = s->_unused25;
+	h->_unused26 = s->_unused26;
+	h->_unused27 = s->_unused27;
+	h->_unused28 = s->_unused28;
+	h->_unused29 = s->_unused29;
+	h->_unused30 = s->_unused30;
+	h->do_not_store = s->do_not_store;
 }
 
 static int sdb_salt_to_Salt(const struct sdb_salt *s, Salt *h)
diff --git a/source4/kdc/wscript_build b/source4/kdc/wscript_build
index 7b8fcb1..2abafa6 100755
--- a/source4/kdc/wscript_build
+++ b/source4/kdc/wscript_build
@@ -61,13 +61,13 @@ bld.SAMBA_SUBSYSTEM('WDC_SAMBA4',
 bld.SAMBA_SUBSYSTEM('sdb',
 	source='sdb.c',
 	includes=kdc_include,
-	deps='krb5',
+	deps='talloc krb5',
 	)
 
 bld.SAMBA_SUBSYSTEM('sdb_hdb',
 	source='sdb_to_hdb.c',
 	includes=kdc_include,
-	deps='sdb hdb',
+	deps='talloc sdb hdb',
 	autoproto='sdb_hdb.h',
 	enabled=bld.CONFIG_SET('SAMBA4_USES_HEIMDAL')
 	)


-- 
Samba Shared Repository



More information about the samba-cvs mailing list