summaryrefslogtreecommitdiffstats
path: root/ssl/d1_pkt.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2009-07-01 11:29:01 +0000
committerDr. Stephen Henson <steve@openssl.org>2009-07-01 11:29:01 +0000
commit2b3cd246e5680c3842f04ff014fbe149bc1878b9 (patch)
tree0ae12f29e795e403931dccdcc61a3d9dfa0a881d /ssl/d1_pkt.c
parent7171ade2c218542184238f7c38b195e21b437914 (diff)
PR: 1962
Submitted by: Daniel Mentz <daniel.m@sent.com> Reviewed by: steve@openssl.org Fix "for dtls1_get_record() returns a bad record in one edge case" bug.
Diffstat (limited to 'ssl/d1_pkt.c')
-rw-r--r--ssl/d1_pkt.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/ssl/d1_pkt.c b/ssl/d1_pkt.c
index 394daf6258..35e83d8b52 100644
--- a/ssl/d1_pkt.c
+++ b/ssl/d1_pkt.c
@@ -623,6 +623,7 @@ again:
/* this packet contained a partial record, dump it */
if ( n != i)
{
+ rr->length = 0;
s->packet_length = 0;
goto again;
}
@@ -636,6 +637,7 @@ again:
bitmap = dtls1_get_bitmap(s, rr, &is_next_epoch);
if ( bitmap == NULL)
{
+ rr->length = 0;
s->packet_length = 0; /* dump this record */
goto again; /* get another record */
}
@@ -660,6 +662,7 @@ again:
{
dtls1_record_bitmap_update(s, bitmap);
dtls1_buffer_record(s, &(s->d1->unprocessed_rcds), rr->seq_num);
+ rr->length = 0;
s->packet_length = 0;
goto again;
}