{
uint8_t *input = (uint8_t *)initial_input;
+ /* Empty extension */
+ if (input_len == 0)
+ return 0;
+
if (!(HAS_SPACE(2)))
goto invalid_length;
{
uint8_t *input = (uint8_t *)initial_input;
+ /* Empty extension */
+ if (input_len == 0)
+ return 0;
+
if (ssl_state->current_flags & SSL_AL_FLAG_STATE_CLIENT_HELLO) {
if (!(HAS_SPACE(1)))
goto invalid_length;
{
uint8_t *input = (uint8_t *)initial_input;
+ /* Empty extension */
+ if (input_len == 0)
+ return 0;
+
if (!(HAS_SPACE(2)))
goto invalid_length;
{
uint8_t *input = (uint8_t *)initial_input;
+ /* Empty extension */
+ if (input_len == 0)
+ return 0;
+
if (!(HAS_SPACE(1)))
goto invalid_length;
int ret;
int rc;
- uint32_t parsed = 0;
JA3Buffer *ja3_extensions = NULL;
JA3Buffer *ja3_elliptic_curves = NULL;
if (!(HAS_SPACE(ext_len)))
goto invalid_length;
- /* Don't decode empty extensions */
- if (ext_len == 0)
- goto next;
-
- parsed = input - initial_input;
-
switch (ext_type) {
case SSL_EXTENSION_SNI:
{
/* coverity[tainted_data] */
ret = TLSDecodeHSHelloExtensionSni(ssl_state, input,
- input_len - parsed);
+ ext_len);
if (ret < 0)
goto end;
{
/* coverity[tainted_data] */
ret = TLSDecodeHSHelloExtensionEllipticCurves(ssl_state, input,
- input_len - parsed,
+ ext_len,
ja3_elliptic_curves);
if (ret < 0)
goto end;
{
/* coverity[tainted_data] */
ret = TLSDecodeHSHelloExtensionEllipticCurvePF(ssl_state, input,
- input_len - parsed,
+ ext_len,
ja3_elliptic_curves_pf);
if (ret < 0)
goto end;
case SSL_EXTENSION_SUPPORTED_VERSIONS:
{
ret = TLSDecodeHSHelloExtensionSupportedVersions(ssl_state, input,
- input_len - parsed);
+ ext_len);
if (ret < 0)
goto end;
}
}
-next:
if ((ssl_state->current_flags & SSL_AL_FLAG_STATE_CLIENT_HELLO) &&
ssl_config.enable_ja3) {
if (TLSDecodeValueIsGREASE(ext_type) != 1) {