]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
tls/heartbleed: formatting fixes
authorVictor Julien <victor@inliniac.net>
Wed, 23 Apr 2014 13:40:25 +0000 (15:40 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 2 May 2014 09:55:12 +0000 (11:55 +0200)
src/app-layer-ssl.c

index 30f9ce3eadcb5b543d6d4a4d2d071c6cfe880456..f1aa19af0ce5ebd4bead0ee17e8508c6831811b9 100644 (file)
@@ -338,6 +338,7 @@ static int SSLv3ParseHandshakeProtocol(SSLState *ssl_state, uint8_t *input,
  * \param sslstate  Pointer to the SSL state.
  * \param input     Pointer the received input data.
  * \param input_len Length in bytes of the received data.
+ * \param direction 1 toclient, 0 toserver
  *
  * \retval The number of bytes parsed on success, 0 if nothing parsed, -1 on failure.
  */
@@ -366,10 +367,11 @@ static int SSLv3ParseHeartbeatProtocol(SSLState *ssl_state, uint8_t *input,
             SCLogDebug("HeartBeat Record type sent in the toserver "
                        "direction!");
         }
-        // if we reach this poin then can we assume that the HB request is encrypted if so lets set the heartbeat record len
+        /* if we reach this poin then can we assume that the HB request
+         * is encrypted if so lets set the heartbeat record len */
         if (!(hb_type == TLS_HB_REQUEST || hb_type == TLS_HB_RESPONSE)) {
-            SCLogDebug("Encrypted HeartBeat Request In-flight");
             ssl_state->hb_record_len = ssl_state->curr_connp->record_length;
+            SCLogDebug("Encrypted HeartBeat Request In-flight. Storing len %u", ssl_state->hb_record_len);
             return (ssl_state->curr_connp->record_length - 3);
         }
 
@@ -396,35 +398,46 @@ static int SSLv3ParseHeartbeatProtocol(SSLState *ssl_state, uint8_t *input,
             return 0;
         }
 
-    //OpenSSL still seems to discard multiple in-flight heartbeats although some tools send multiple at once
-    } else if (direction == 1 && (ssl_state->flags & SSL_AL_FLAG_HB_INFLIGHT) && (ssl_state->flags & SSL_AL_FLAG_HB_SERVER_INIT)) {
+    /* OpenSSL still seems to discard multiple in-flight
+     * heartbeats although some tools send multiple at once */
+    } else if (direction == 1 && (ssl_state->flags & SSL_AL_FLAG_HB_INFLIGHT) &&
+            (ssl_state->flags & SSL_AL_FLAG_HB_SERVER_INIT)) {
         SCLogDebug("Multiple In-Flight Server Intiated HeartBeats");
         AppLayerDecoderEventsSetEvent(ssl_state->f, TLS_DECODER_EVENT_INVALID_HEARTBEAT);
         return -1;
-    } else if (direction == 0 && (ssl_state->flags & SSL_AL_FLAG_HB_INFLIGHT) && (ssl_state->flags & SSL_AL_FLAG_HB_CLIENT_INIT)) {
+    } else if (direction == 0 && (ssl_state->flags & SSL_AL_FLAG_HB_INFLIGHT) &&
+            (ssl_state->flags & SSL_AL_FLAG_HB_CLIENT_INIT)) {
         SCLogDebug("Multiple In-Flight Client Intiated HeartBeats");
         AppLayerDecoderEventsSetEvent(ssl_state->f, TLS_DECODER_EVENT_INVALID_HEARTBEAT);
         return -1;
     } else {
-        //we have a HB record in the opposite direction of the request lets reset our flags
+        /* we have a HB record in the opposite direction of the request
+         * lets reset our flags */
         ssl_state->flags &= ~SSL_AL_FLAG_HB_INFLIGHT;
         ssl_state->flags &= ~SSL_AL_FLAG_HB_SERVER_INIT;
         ssl_state->flags &= ~SSL_AL_FLAG_HB_CLIENT_INIT;
 
-        // if we reach this poin then can we assume that the HB request is encrypted if so lets set the heartbeat record len
+        /* if we reach this poin then can we assume that the HB request is
+         *encrypted if so lets set the heartbeat record len */
         if (!(hb_type == TLS_HB_REQUEST || hb_type == TLS_HB_RESPONSE)) {
-            //check to see if the encrypted response is longer than the encrypted request
-            if (ssl_state->hb_record_len > 0 && ssl_state->hb_record_len < ssl_state->curr_connp->record_length) {
-                SCLogDebug("My Heart It's Bleeding.. OpenSSL HeartBleed Response");
-                AppLayerDecoderEventsSetEvent(ssl_state->f, TLS_DECODER_EVENT_DATALEAK_HEARTBEAT_MISMATCH);
+            /* check to see if the encrypted response is longer than the
+             * encrypted request */
+            if (ssl_state->hb_record_len > 0 &&
+                ssl_state->hb_record_len < ssl_state->curr_connp->record_length)
+            {
+                SCLogDebug("My Heart It's Bleeding.. OpenSSL HeartBleed Response (%u)",
+                        ssl_state->hb_record_len);
+                AppLayerDecoderEventsSetEvent(ssl_state->f,
+                        TLS_DECODER_EVENT_DATALEAK_HEARTBEAT_MISMATCH);
                 ssl_state->hb_record_len = 0;
                 return -1;
             }
         }
-        // reset the hb record len in-case we have legit hb's followed by a bad one
+        /* reset the hb record len in-case we have legit hb's followed by a bad one */
         ssl_state->hb_record_len = 0;
     }
-    // skip the heartbeat, 3 bytes were already parsed, e.g |18 03 02| for TLS 1.2
+
+    /* skip the heartbeat, 3 bytes were already parsed, e.g |18 03 02| for TLS 1.2 */
     return (ssl_state->curr_connp->record_length - 3);
 }