We currently have 26 predefined extensions, allowing the user to
define 5 extra as tested in tests/handshake-large-packet.c. However,
if we introduce one more, session->internals.used_exts exceeds.
Signed-off-by: Daiki Ueno <dueno@redhat.com>
/* TLS Extensions */
/* we can receive up to MAX_EXT_TYPES extensions.
*/
-#define MAX_EXT_TYPES 32
+#define MAX_EXT_TYPES 64
/* TLS-internal extension (will be parsed after a ciphersuite is selected).
* This amends the gnutls_ext_parse_type_t. Not exported yet to allow more refining
GNUTLS_EXTENSION_MAX /* not real extension - used for iterators */
} extensions_t;
-#define GNUTLS_EXTENSION_MAX_VALUE 31
-#define ext_track_t uint32_t
+#define GNUTLS_EXTENSION_MAX_VALUE 63
+#define ext_track_t uint64_t
#if GNUTLS_EXTENSION_MAX >= GNUTLS_EXTENSION_MAX_VALUE
# error over limit
BUFFER_APPEND_NUM(packed, 0);
for (i = 0; i <= GNUTLS_EXTENSION_MAX_VALUE; i++) {
- if (session->internals.used_exts & (1U << i)) {
+ if (session->internals.used_exts & ((ext_track_t)1 << i)) {
ext = gid_to_ext_entry(session, i);
if (ext == NULL)
inline static unsigned
_gnutls_hello_ext_is_present(gnutls_session_t session, extensions_t id)
{
- if (session->internals.used_exts & (1U << id))
+ if (session->internals.used_exts & ((ext_track_t)1 << id))
return 1;
return 0;
return 0;
}
- session->internals.used_exts |= (1U << id);
+ session->internals.used_exts |= ((ext_track_t)1 << id);
return 1;
}