summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2007-02-22 07:57:11 +0000
committerSimon Josefsson <simon@josefsson.org>2007-02-22 07:57:11 +0000
commit56c5e1b72f6b86b4cad4da2e155f98eb0e152d28 (patch)
treec54d82ae9dec371ab7f372a66bbe1a698d16dcbf
parent984d0b3ef6433f294c1a62f4fb70d20f9be6140c (diff)
downloadgnutls-56c5e1b72f6b86b4cad4da2e155f98eb0e152d28.tar.gz
Use our own logic to determine whether to send extension replies in
server.
-rw-r--r--lib/ext_authz.c44
1 files changed, 30 insertions, 14 deletions
diff --git a/lib/ext_authz.c b/lib/ext_authz.c
index 418022436f..7e8a0c65bb 100644
--- a/lib/ext_authz.c
+++ b/lib/ext_authz.c
@@ -152,12 +152,16 @@ _gnutls_authz_ext_client_recv_params (gnutls_session_t session,
if (ret < 0)
return ret;
- if (session->security_parameters.entity == GNUTLS_CLIENT
- && *client_formats)
+ if (*client_formats)
{
- _gnutls_debug_log ("EXT[%x]: Will send supplemental data\n",
- session);
- session->security_parameters.extensions.do_send_supplemental = 1;
+ if (session->security_parameters.entity == GNUTLS_CLIENT)
+ {
+ _gnutls_debug_log ("EXT[%x]: Will send supplemental data\n",
+ session);
+ session->security_parameters.extensions.do_send_supplemental = 1;
+ }
+ else
+ session->security_parameters.extensions.authz_recvd_client = 1;
}
return 0;
@@ -173,8 +177,12 @@ _gnutls_authz_ext_client_send_params (gnutls_session_t session,
int ret;
/* Should we be sending this? */
- if (!_gnutls_extension_list_check (session, GNUTLS_EXTENSION_AUTHZ_CLIENT))
- return 0;
+ if (session->security_parameters.entity == GNUTLS_SERVER
+ && !session->security_parameters.extensions.authz_recvd_client)
+ {
+ gnutls_assert ();
+ return 0;
+ }
ret = send_extension (session, data, _data_size, client_formats);
@@ -201,12 +209,16 @@ _gnutls_authz_ext_server_recv_params (gnutls_session_t session,
if (ret < 0)
return ret;
- if (session->security_parameters.entity == GNUTLS_CLIENT
- && *server_formats)
+ if (*server_formats)
{
- _gnutls_debug_log ("EXT[%x]: Will expect supplemental data\n",
- session);
- session->security_parameters.extensions.do_recv_supplemental = 1;
+ if (session->security_parameters.entity == GNUTLS_CLIENT)
+ {
+ _gnutls_debug_log ("EXT[%x]: Will expect supplemental data\n",
+ session);
+ session->security_parameters.extensions.do_recv_supplemental = 1;
+ }
+ else
+ session->security_parameters.extensions.authz_recvd_server = 1;
}
return 0;
@@ -222,8 +234,12 @@ _gnutls_authz_ext_server_send_params (gnutls_session_t session,
int ret;
/* Should we be sending this? */
- if (!_gnutls_extension_list_check (session, GNUTLS_EXTENSION_AUTHZ_SERVER))
- return 0;
+ if (session->security_parameters.entity == GNUTLS_SERVER
+ && !session->security_parameters.extensions.authz_recvd_server)
+ {
+ gnutls_assert ();
+ return 0;
+ }
ret = send_extension (session, data, _data_size, server_formats);