Less pointer signedness warnings (partly by using the new asn.1 CHOICE decoder)
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17560 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -107,7 +107,7 @@ do_delegation (krb5_auth_context ac, | ||||
| 	       krb5_creds *cred, | ||||
| 	       const gss_name_t target_name, | ||||
| 	       krb5_data *fwd_data, | ||||
| 	       int *flags) | ||||
| 	       uint32_t *flags) | ||||
| { | ||||
|     krb5_creds creds; | ||||
|     krb5_kdc_flags fwd_flags; | ||||
| @@ -491,7 +491,8 @@ repl_mutual | ||||
|             OM_uint32 * time_rec | ||||
|            ) | ||||
| { | ||||
|     OM_uint32 ret, seq_number; | ||||
|     OM_uint32 ret; | ||||
|     int32_t seq_number; | ||||
|     krb5_error_code kret; | ||||
|     krb5_data indata; | ||||
|     krb5_ap_rep_enc_part *repl; | ||||
| @@ -624,13 +625,13 @@ spnego_reply | ||||
| { | ||||
|     OM_uint32 ret; | ||||
|     krb5_data indata; | ||||
|     NegTokenTarg targ; | ||||
|     NegotiationToken token; | ||||
|     NegTokenTarg *targ; | ||||
|     u_char oidbuf[17]; | ||||
|     size_t oidlen; | ||||
|     gss_buffer_desc sub_token; | ||||
|     ssize_t mech_len; | ||||
|     const u_char *p; | ||||
|     size_t len, taglen; | ||||
|     krb5_boolean require_mic; | ||||
|  | ||||
|     output_token->length = 0; | ||||
| @@ -674,51 +675,42 @@ spnego_reply | ||||
|     } else | ||||
| 	return GSS_S_BAD_MECH; | ||||
|  | ||||
|     ret = der_match_tag_and_length((const char *)indata.data, | ||||
| 				   indata.length, | ||||
| 				   ASN1_C_CONTEXT, CONS, 1, &len, &taglen); | ||||
|     ret = decode_NegotiationToken(indata.data, indata.length, &token, NULL); | ||||
|     if (ret) { | ||||
| 	gssapi_krb5_set_status("Failed to decode NegToken choice"); | ||||
| 	gssapi_krb5_set_status("Failed to decode NegotiationToken"); | ||||
| 	*minor_status = ret; | ||||
| 	return GSS_S_FAILURE; | ||||
|     } | ||||
|  | ||||
|     if(len > indata.length - taglen) { | ||||
| 	gssapi_krb5_set_status("Buffer overrun in NegToken choice"); | ||||
|     if(token.element != choice_NegotiationToken_negTokenTarg ) { | ||||
| 	gssapi_krb5_set_status("NegotiationToken not a NegTokenTarg"); | ||||
| 	*minor_status = ASN1_OVERRUN; | ||||
| 	return GSS_S_FAILURE; | ||||
|     } | ||||
|     targ = &token.u.negTokenTarg; | ||||
|  | ||||
|     ret = decode_NegTokenTarg((const char *)indata.data + taglen,  | ||||
| 			      len, &targ, NULL); | ||||
|     if (ret) { | ||||
| 	gssapi_krb5_set_status("Failed to decode NegTokenTarg"); | ||||
| 	*minor_status = ret; | ||||
| 	return GSS_S_FAILURE; | ||||
|     } | ||||
|  | ||||
|     if (targ.negResult == NULL | ||||
| 	|| *(targ.negResult) == reject | ||||
| 	|| targ.supportedMech == NULL) { | ||||
| 	free_NegTokenTarg(&targ); | ||||
|     if (targ->negResult == NULL | ||||
| 	|| *(targ->negResult) == reject | ||||
| 	|| targ->supportedMech == NULL) { | ||||
| 	free_NegotiationToken(&token); | ||||
| 	return GSS_S_BAD_MECH; | ||||
|     } | ||||
|      | ||||
|     ret = der_put_oid(oidbuf + sizeof(oidbuf) - 1, | ||||
| 		      sizeof(oidbuf), | ||||
| 		      targ.supportedMech, | ||||
| 		      targ->supportedMech, | ||||
| 		      &oidlen); | ||||
|     if (ret || oidlen != GSS_KRB5_MECHANISM->length | ||||
| 	|| memcmp(oidbuf + sizeof(oidbuf) - oidlen, | ||||
| 		  GSS_KRB5_MECHANISM->elements, | ||||
| 		  oidlen) != 0) { | ||||
| 	free_NegTokenTarg(&targ); | ||||
| 	free_NegotiationToken(&token); | ||||
| 	return GSS_S_BAD_MECH; | ||||
|     } | ||||
|  | ||||
|     if (targ.responseToken != NULL) { | ||||
| 	sub_token.length = targ.responseToken->length; | ||||
| 	sub_token.value  = targ.responseToken->data; | ||||
|     if (targ->responseToken != NULL) { | ||||
| 	sub_token.length = targ->responseToken->length; | ||||
| 	sub_token.value  = targ->responseToken->data; | ||||
|     } else { | ||||
| 	sub_token.length = 0; | ||||
| 	sub_token.value  = NULL; | ||||
| @@ -738,7 +730,7 @@ spnego_reply | ||||
| 				   ret_flags, | ||||
| 				   time_rec); | ||||
|     if (ret) { | ||||
| 	free_NegTokenTarg(&targ); | ||||
| 	free_NegotiationToken(&token); | ||||
| 	return ret; | ||||
|     } | ||||
|  | ||||
| @@ -749,7 +741,7 @@ spnego_reply | ||||
|     ret = _gss_spnego_require_mechlist_mic(minor_status, *context_handle, | ||||
| 					   &require_mic); | ||||
|     if (ret) { | ||||
| 	free_NegTokenTarg(&targ); | ||||
| 	free_NegotiationToken(&token); | ||||
| 	return ret; | ||||
|     } | ||||
|  | ||||
| @@ -759,8 +751,8 @@ spnego_reply | ||||
| 	size_t buf_len; | ||||
| 	gss_buffer_desc mic_buf, mech_buf; | ||||
|  | ||||
| 	if (targ.mechListMIC == NULL) { | ||||
| 	    free_NegTokenTarg(&targ); | ||||
| 	if (targ->mechListMIC == NULL) { | ||||
| 	    free_NegotiationToken(&token); | ||||
| 	    *minor_status = 0; | ||||
| 	    return GSS_S_BAD_MIC; | ||||
| 	} | ||||
| @@ -773,7 +765,7 @@ spnego_reply | ||||
| 			  &m0, | ||||
| 			  NULL); | ||||
| 	if (ret) { | ||||
| 	    free_NegTokenTarg(&targ); | ||||
| 	    free_NegotiationToken(&token); | ||||
| 	    *minor_status = ENOMEM; | ||||
| 	    return GSS_S_FAILURE; | ||||
| 	} | ||||
| @@ -781,7 +773,7 @@ spnego_reply | ||||
| 	ASN1_MALLOC_ENCODE(MechTypeList, mech_buf.value, mech_buf.length, | ||||
| 			   &mechlist, &buf_len, ret); | ||||
| 	if (ret) { | ||||
| 	    free_NegTokenTarg(&targ); | ||||
| 	    free_NegotiationToken(&token); | ||||
| 	    free_oid(&m0); | ||||
| 	    *minor_status = ENOMEM; | ||||
| 	    return GSS_S_FAILURE; | ||||
| @@ -789,15 +781,15 @@ spnego_reply | ||||
| 	if (mech_buf.length != buf_len) | ||||
| 	    abort(); | ||||
|  | ||||
| 	mic_buf.length = targ.mechListMIC->length; | ||||
| 	mic_buf.value  = targ.mechListMIC->data; | ||||
| 	mic_buf.length = targ->mechListMIC->length; | ||||
| 	mic_buf.value  = targ->mechListMIC->data; | ||||
|  | ||||
| 	ret = gss_verify_mic(minor_status, *context_handle, | ||||
| 			     &mech_buf, &mic_buf, NULL); | ||||
| 	free(mech_buf.value); | ||||
| 	free_oid(&m0); | ||||
|     } | ||||
|     free_NegTokenTarg(&targ); | ||||
|     free_NegotiationToken(&token); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand