]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Corrected extension type checks which used an 8 bit extension size, instead of 16...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 4 Sep 2002 16:57:43 +0000 (16:57 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 4 Sep 2002 16:57:43 +0000 (16:57 +0000)
NEWS
lib/gnutls_extensions.c
lib/gnutls_int.h

diff --git a/NEWS b/NEWS
index eeb0efe10fca029d270955b9e5d0060fc13ba43a..896101083fec4a62194ddc65a603a7f5d12db007 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@ Version 0.5.6
 - Corrected bugs in SRP implementation, which prevented gnutls 
   to interoperate with other implementations.
 - Corrected bug in cert_type extension.
+- Corrected extension type checks which used an 8 bit extension size,
+  instead of 16 bits.
 
 Version 0.5.5 (3/09/2002)
 - Updated the SRP implementation to the latest draft. The blowfish
index a05902fb47a75012666afd126b28ad8ba9d3c803..68fe3844d3a26581020941d23baf6a9ecfbfab1b 100644 (file)
@@ -83,7 +83,7 @@ const char *_gnutls_extension_get_name(uint16 type)
 /* Checks if the extension we just received is one of the 
  * requested ones. Otherwise it's a fatal error.
  */
-static int _gnutls_extension_list_check( gnutls_session session, uint8 type) {
+static int _gnutls_extension_list_check( gnutls_session session, uint16 type) {
 int i;
        if (session->security_parameters.entity==GNUTLS_CLIENT) {
                for(i=0;i<session->internals.extensions_sent_size;i++) {
@@ -154,12 +154,10 @@ int i;
  * This list is used to check whether the (later) received
  * extensions are the ones we requested.
  */
-static void _gnutls_extension_list_add( gnutls_session session, uint8 type) {
+static void _gnutls_extension_list_add( gnutls_session session, uint16 type) {
 
        if (session->security_parameters.entity==GNUTLS_CLIENT) {
-               if (session->internals.extensions_sent_size <
-                       sizeof(session->internals.extensions_sent)) {
-       
+               if (session->internals.extensions_sent_size < MAX_EXT_TYPES) {
                        session->internals.extensions_sent[session->internals.extensions_sent_size] = type;
                        session->internals.extensions_sent_size++;
                } else {
index 437aa1149029aed65e391613894cd233ca4bec16..502df46361ad1dcc2d2db6abece166c66b425571 100644 (file)
@@ -65,6 +65,8 @@ typedef int gnutls_transport_ptr;
 #define MAX_LOG_SIZE 1024 /* maximum number of log message */
 #define MAX_SRP_USERNAME 256
 
+/* we can receive up to MAX_EXT_TYPES extensions.
+ */
 #define MAX_EXT_TYPES 16
 
 /* The initial size of the receive
@@ -525,9 +527,9 @@ typedef struct {
        /* holds the extensions we sent to the peer
         * (in case of a client)
         */
-       uint                  extensions_sent[MAX_EXT_TYPES];
-       uint                  extensions_sent_size;
-       
+       uint16                  extensions_sent[MAX_EXT_TYPES];
+       uint16                  extensions_sent_size;
+
        /* is 0 if we are to send the whole PGP key, or non zero
         * if the fingerprint is to be sent.
         */