@@ -565,7 +565,6 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
565565 oidc_http_hdr_out_location_set (r ,
566566 oidc_util_absolute_url (r , c , oidc_cfg_default_sso_url_get (c )));
567567 OIDC_METRICS_COUNTER_INC (r , c , OM_AUTHN_RESPONSE_ERROR_STATE_MISMATCH );
568- oidc_cfg_provider_destroy (provider );
569568 return HTTP_MOVED_TEMPORARILY ;
570569 }
571570 oidc_error (r ,
@@ -578,7 +577,7 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
578577 }
579578
580579 OIDC_METRICS_COUNTER_INC (r , c , OM_AUTHN_RESPONSE_ERROR_STATE_MISMATCH );
581- oidc_cfg_provider_destroy ( provider );
580+
582581 return oidc_util_html_send_error (r , "Invalid Authorization Response" ,
583582 "Could not match the authorization response to an earlier request via "
584583 "the state parameter and corresponding state cookie" ,
@@ -588,21 +587,18 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
588587 /* see if the response is an error response */
589588 if (apr_table_get (params , OIDC_PROTO_ERROR ) != NULL ) {
590589 OIDC_METRICS_COUNTER_INC (r , c , OM_AUTHN_RESPONSE_ERROR_PROVIDER );
591- oidc_cfg_provider_destroy (provider );
592590 return oidc_response_authorization_error (r , c , proto_state , apr_table_get (params , OIDC_PROTO_ERROR ),
593591 apr_table_get (params , OIDC_PROTO_ERROR_DESCRIPTION ));
594592 }
595593
596594 /* handle the code, implicit or hybrid flow */
597595 if (oidc_response_flows (r , c , proto_state , provider , params , response_mode , & jwt ) == FALSE) {
598596 OIDC_METRICS_COUNTER_INC (r , c , OM_AUTHN_RESPONSE_ERROR_PROTOCOL );
599- oidc_cfg_provider_destroy (provider );
600597 return oidc_response_authorization_error (r , c , proto_state , "Error in handling response type." , NULL );
601598 }
602599
603600 if (jwt == NULL ) {
604601 oidc_error (r , "no id_token was provided" );
605- oidc_cfg_provider_destroy (provider );
606602 return oidc_response_authorization_error (r , c , proto_state , "No id_token was provided." , NULL );
607603 }
608604
@@ -638,7 +634,6 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
638634 if (_oidc_strcmp (session -> remote_user , r -> user ) != 0 ) {
639635 oidc_warn (r , "user set from new id_token is different from current one" );
640636 oidc_jwt_destroy (jwt );
641- oidc_cfg_provider_destroy (provider );
642637 return oidc_response_authorization_error (r , c , proto_state , "User changed!" , NULL );
643638 }
644639 }
@@ -652,7 +647,6 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
652647 apr_table_get (params , OIDC_PROTO_STATE ), original_url , userinfo_jwt ) == FALSE) {
653648 oidc_proto_state_destroy (proto_state );
654649 oidc_jwt_destroy (jwt );
655- oidc_cfg_provider_destroy (provider );
656650 return HTTP_INTERNAL_SERVER_ERROR ;
657651 }
658652
@@ -662,15 +656,13 @@ static int oidc_response_process(request_rec *r, oidc_cfg_t *c, oidc_session_t *
662656 oidc_error (r , "remote user could not be set" );
663657 oidc_jwt_destroy (jwt );
664658 OIDC_METRICS_COUNTER_INC (r , c , OM_AUTHN_RESPONSE_ERROR_REMOTE_USER );
665- oidc_cfg_provider_destroy (provider );
666659 return oidc_response_authorization_error (
667660 r , c , proto_state , "Remote user could not be set: contact the website administrator" , NULL );
668661 }
669662
670663 /* cleanup */
671664 oidc_proto_state_destroy (proto_state );
672665 oidc_jwt_destroy (jwt );
673- oidc_cfg_provider_destroy (provider );
674666
675667 /* check that we've actually authenticated a user; functions as error handling for oidc_get_remote_user */
676668 if (r -> user == NULL ) {
0 commit comments