summaryrefslogtreecommitdiff
path: root/src/lib/libssl/t1_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/t1_lib.c')
-rw-r--r--src/lib/libssl/t1_lib.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index bfd4731365..a649dafba9 100644
--- a/src/lib/libssl/t1_lib.c
+++ b/src/lib/libssl/t1_lib.c
@@ -2441,16 +2441,20 @@ tls1_process_heartbeat(SSL *s)
2441 unsigned int payload; 2441 unsigned int payload;
2442 unsigned int padding = 16; /* Use minimum padding */ 2442 unsigned int padding = 16; /* Use minimum padding */
2443 2443
2444 /* Read type and payload length first */
2445 hbtype = *p++;
2446 n2s(p, payload);
2447 pl = p;
2448
2449 if (s->msg_callback) 2444 if (s->msg_callback)
2450 s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT, 2445 s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT,
2451 &s->s3->rrec.data[0], s->s3->rrec.length, 2446 &s->s3->rrec.data[0], s->s3->rrec.length,
2452 s, s->msg_callback_arg); 2447 s, s->msg_callback_arg);
2453 2448
2449 /* Read type and payload length first */
2450 if (1 + 2 + 16 > s->s3->rrec.length)
2451 return 0; /* silently discard */
2452 hbtype = *p++;
2453 n2s(p, payload);
2454 if (1 + 2 + payload + 16 > s->s3->rrec.length)
2455 return 0; /* silently discard per RFC 6520 sec. 4 */
2456 pl = p;
2457
2454 if (hbtype == TLS1_HB_REQUEST) 2458 if (hbtype == TLS1_HB_REQUEST)
2455 { 2459 {
2456 unsigned char *buffer, *bp; 2460 unsigned char *buffer, *bp;