Index: ext_server_name.c =================================================================== RCS file: /cvs/gnutls/gnutls/lib/ext_server_name.c,v retrieving revision 2.11 diff -u -u -r2.11 ext_server_name.c --- ext_server_name.c 25 Mar 2003 18:01:47 -0000 2.11 +++ ext_server_name.c 14 Apr 2003 07:38:42 -0000 @@ -46,7 +46,7 @@ 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 @@ 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 @@ 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 @@ /* 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; @@ -179,8 +183,7 @@ } } } - if (total_size == 0) - return 0; + return total_size; }