summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2003-08-09 19:03:24 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2003-08-09 19:03:24 +0000
commit94d05351674a8f457f94b7bdc869ea83e7b04a77 (patch)
tree8ac5a58ed6d0460b429771d3a823a70cf1050469
parent9d8001f05921170aa3c0c56b25b69aa689daeb0b (diff)
downloadgnutls-94d05351674a8f457f94b7bdc869ea83e7b04a77.tar.gz
backported the ext_server_name from 0.9.x releases.
-rw-r--r--lib/ext_server_name.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/lib/ext_server_name.c b/lib/ext_server_name.c
index 4855f868c1..44c78a721b 100644
--- a/lib/ext_server_name.c
+++ b/lib/ext_server_name.c
@@ -46,7 +46,7 @@ int _gnutls_server_name_recv_params(gnutls_session session,
if (session->security_parameters.entity == GNUTLS_SERVER) {
DECR_LENGTH_RET(data_size, 2, 0);
len = _gnutls_read_uint16(data);
-
+
if ( len != data_size) {
/* This is unexpected packet length, but
* just ignore it, for now.
@@ -121,7 +121,8 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
ssize_t data_size = _data_size;
int total_size = 0;
- /* this function sends the client extension data (dnsname) */
+ /* this function sends the client extension data (dnsname)
+ */
if (session->security_parameters.entity == GNUTLS_CLIENT) {
/* uint16 */
@@ -130,9 +131,12 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
i < session->security_parameters.extensions.server_names_size;
i++)
{
- /* count the total size */
+ /* count the total size
+ */
len = session->security_parameters.extensions.server_names[i].name_length;
- /* uint8 + uint16 + size */
+
+ /* uint8 + uint16 + size
+ */
total_size += 1 + 2 + len;
}
@@ -141,7 +145,7 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
/* UINT16: write total size of all names
*/
DECR_LENGTH_RET( data_size, 2, GNUTLS_E_SHORT_MEMORY_BUFFER);
- _gnutls_write_uint16(total_size, p);
+ _gnutls_write_uint16(total_size-2, p);
p += 2;
for (i = 0;
@@ -175,12 +179,11 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
break;
default:
gnutls_assert();
- return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+ return GNUTLS_E_INTERNAL_ERROR;
}
}
}
- if (total_size == 0)
- return 0;
+
return total_size;
}
@@ -190,7 +193,7 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
* @data: will hold the data
* @data_length: will hold the data length. Must hold the maximum size of data.
* @type: will hold the server name indicator type
- * @index: is the index of the server_name
+ * @indx: is the index of the server_name
*
* This function will allow you to get the name indication (if any),
* a client has sent. The name indication may be any of the enumeration
@@ -210,7 +213,7 @@ int _gnutls_server_name_send_params(gnutls_session session, opaque * data,
**/
int gnutls_server_name_get(gnutls_session session, void *data,
int *data_length,
- int * type, int index)
+ int * type, int indx)
{
char *_data = data;
@@ -219,23 +222,23 @@ int gnutls_server_name_get(gnutls_session session, void *data,
return GNUTLS_E_INVALID_REQUEST;
}
- if (index >
+ if (indx >
session->security_parameters.extensions.server_names_size - 1) {
gnutls_assert();
return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE;
}
*type =
- session->security_parameters.extensions.server_names[index].type;
+ session->security_parameters.extensions.server_names[indx].type;
if (*data_length > /* greater since we need one extra byte for the null */
- session->security_parameters.extensions.server_names[index].
+ session->security_parameters.extensions.server_names[indx].
name_length) {
*data_length =
- session->security_parameters.extensions.server_names[index].
+ session->security_parameters.extensions.server_names[indx].
name_length;
memcpy(data,
- session->security_parameters.extensions.server_names[index].
+ session->security_parameters.extensions.server_names[indx].
name, *data_length);
if (*type == GNUTLS_NAME_DNS) /* null terminate */
@@ -243,7 +246,7 @@ int gnutls_server_name_get(gnutls_session session, void *data,
} else {
*data_length =
- session->security_parameters.extensions.server_names[index].
+ session->security_parameters.extensions.server_names[indx].
name_length;
return GNUTLS_E_SHORT_MEMORY_BUFFER;
}