hdb: eliminate hdb_entry_ex
Remove hdb_entry_ex and revert to the original design of hdb_entry (except with an additional context member in hdb_entry which is managed by the free_entry method in HDB).
This commit is contained in:
		
							
								
								
									
										37
									
								
								kdc/mssfu.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								kdc/mssfu.c
									
									
									
									
									
								
							| @@ -47,8 +47,8 @@ static krb5_error_code | ||||
| check_constrained_delegation(krb5_context context, | ||||
| 			     krb5_kdc_configuration *config, | ||||
| 			     HDB *clientdb, | ||||
| 			     hdb_entry_ex *client, | ||||
| 			     hdb_entry_ex *server, | ||||
| 			     hdb_entry *client, | ||||
| 			     hdb_entry *server, | ||||
| 			     krb5_const_principal target) | ||||
| { | ||||
|     const HDB_Ext_Constrained_delegation_acl *acl; | ||||
| @@ -61,7 +61,7 @@ check_constrained_delegation(krb5_context context, | ||||
|      * of the principals here, while "target" is the principal | ||||
|      * provided by the client. | ||||
|      */ | ||||
|     if (!krb5_realm_compare(context, client->entry.principal, server->entry.principal)) { | ||||
|     if (!krb5_realm_compare(context, client->principal, server->principal)) { | ||||
| 	ret = KRB5KDC_ERR_BADOPTION; | ||||
| 	kdc_log(context, config, 4, | ||||
| 	    "Bad request for constrained delegation"); | ||||
| @@ -74,10 +74,10 @@ check_constrained_delegation(krb5_context context, | ||||
| 	    return 0; | ||||
|     } else { | ||||
| 	/* if client delegates to itself, that ok */ | ||||
| 	if (krb5_principal_compare(context, client->entry.principal, server->entry.principal) == TRUE) | ||||
| 	if (krb5_principal_compare(context, client->principal, server->principal) == TRUE) | ||||
| 	    return 0; | ||||
|  | ||||
| 	ret = hdb_entry_get_ConstrainedDelegACL(&client->entry, &acl); | ||||
| 	ret = hdb_entry_get_ConstrainedDelegACL(client, &acl); | ||||
| 	if (ret) { | ||||
| 	    krb5_clear_error_message(context); | ||||
| 	    return ret; | ||||
| @@ -101,7 +101,7 @@ update_client_names(astgs_request_t r, | ||||
| 		    char **s4ucname, | ||||
| 		    krb5_principal *s4u_client_name, | ||||
| 		    HDB **s4u_clientdb, | ||||
| 		    hdb_entry_ex **s4u_client, | ||||
| 		    hdb_entry **s4u_client, | ||||
| 		    krb5_principal *s4u_canon_client_name, | ||||
| 		    krb5_pac *s4u_pac) | ||||
| { | ||||
| @@ -139,7 +139,7 @@ validate_protocol_transition(astgs_request_t r) | ||||
|     krb5_error_code ret; | ||||
|     KDC_REQ_BODY *b = &r->req.req_body; | ||||
|     EncTicketPart *ticket = &r->ticket->ticket; | ||||
|     hdb_entry_ex *s4u_client = NULL; | ||||
|     hdb_entry *s4u_client = NULL; | ||||
|     HDB *s4u_clientdb; | ||||
|     int flags = HDB_F_FOR_TGS_REQ; | ||||
|     krb5_principal s4u_client_name = NULL, s4u_canon_client_name = NULL; | ||||
| @@ -275,15 +275,16 @@ validate_protocol_transition(astgs_request_t r) | ||||
|      * Ignore require_pwchange and pw_end attributes (as Windows does), | ||||
|      * since S4U2Self is not password authentication. | ||||
|      */ | ||||
|     s4u_client->entry.flags.require_pwchange = FALSE; | ||||
|     free(s4u_client->entry.pw_end); | ||||
|     s4u_client->entry.pw_end = NULL; | ||||
|     s4u_client->flags.require_pwchange = FALSE; | ||||
|     free(s4u_client->pw_end); | ||||
|     s4u_client->pw_end = NULL; | ||||
|  | ||||
|     ret = kdc_check_flags(r, FALSE, s4u_client, r->server); | ||||
|     if (ret) | ||||
| 	goto out; /* kdc_check_flags() calls _kdc_audit_addreason() */ | ||||
|  | ||||
|     ret = _kdc_pac_generate(r->context, | ||||
| 			    r->config, | ||||
| 			    s4u_client, | ||||
| 			    r->server, | ||||
| 			    NULL, | ||||
| @@ -312,7 +313,7 @@ validate_protocol_transition(astgs_request_t r) | ||||
| 	goto out; | ||||
|     } | ||||
|  | ||||
|     ret = krb5_copy_principal(r->context, s4u_client->entry.principal, | ||||
|     ret = krb5_copy_principal(r->context, s4u_client->principal, | ||||
| 			      &s4u_canon_client_name); | ||||
|     if (ret) | ||||
| 	goto out; | ||||
| @@ -322,8 +323,8 @@ validate_protocol_transition(astgs_request_t r) | ||||
|      * delegation or if the impersonate client is disallowed | ||||
|      * forwardable, remove the forwardable flag. | ||||
|      */ | ||||
|     if (r->client->entry.flags.trusted_for_delegation && | ||||
| 	s4u_client->entry.flags.forwardable) { | ||||
|     if (r->client->flags.trusted_for_delegation && | ||||
| 	s4u_client->flags.forwardable) { | ||||
| 	str = "[forwardable]"; | ||||
|     } else { | ||||
| 	b->kdc_options.forwardable = 0; | ||||
| @@ -373,7 +374,7 @@ validate_constrained_delegation(astgs_request_t r) | ||||
|     char *s4ucname = NULL, *s4usname = NULL; | ||||
|     EncTicketPart evidence_tkt; | ||||
|     HDB *s4u_clientdb; | ||||
|     hdb_entry_ex *s4u_client = NULL; | ||||
|     hdb_entry *s4u_client = NULL; | ||||
|     krb5_boolean ad_kdc_issued = FALSE; | ||||
|     Key *clientkey; | ||||
|     Ticket *t; | ||||
| @@ -388,7 +389,7 @@ validate_constrained_delegation(astgs_request_t r) | ||||
|  | ||||
|     memset(&evidence_tkt, 0, sizeof(evidence_tkt)); | ||||
|     local_realm = | ||||
| 	    krb5_principal_get_comp_string(r->context, r->krbtgt->entry.principal, 1); | ||||
| 	    krb5_principal_get_comp_string(r->context, r->krbtgt->principal, 1); | ||||
|  | ||||
|     /* | ||||
|      * We require that the service's TGT has a PAC; this will have been | ||||
| @@ -405,8 +406,8 @@ validate_constrained_delegation(astgs_request_t r) | ||||
|  | ||||
|     t = &b->additional_tickets->val[0]; | ||||
|  | ||||
|     ret = hdb_enctype2key(r->context, &r->client->entry, | ||||
| 			  hdb_kvno2keys(r->context, &r->client->entry, | ||||
|     ret = hdb_enctype2key(r->context, r->client, | ||||
| 			  hdb_kvno2keys(r->context, r->client, | ||||
| 					t->enc_part.kvno ? * t->enc_part.kvno : 0), | ||||
| 			  t->enc_part.etype, &clientkey); | ||||
|     if (ret) { | ||||
| @@ -530,7 +531,7 @@ validate_constrained_delegation(astgs_request_t r) | ||||
|      * can insert the canonical client name ourselves. | ||||
|      */ | ||||
|     if (s4u_canon_client_name == NULL && s4u_client != NULL) { | ||||
| 	ret = krb5_copy_principal(r->context, s4u_client->entry.principal, | ||||
| 	ret = krb5_copy_principal(r->context, s4u_client->principal, | ||||
| 				  &s4u_canon_client_name); | ||||
| 	if (ret) | ||||
| 	    goto out; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Luke Howard
					Luke Howard