Import DTLS fix from upstream OpenSSL 0.9.8 branch:
Fix memory consumption bug with "future epoch" DTLS records. Note that this will not get FreeBSD Security Advisory as DTLS is experimental in OpenSSL. Security: CVE-2009-1377 Obtained from: OpenSSL CVS http://cvs.openssl.org/chngview?cn=18187
This commit is contained in:
parent
27de41c0e2
commit
b7421a6928
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor-crypto/openssl/dist/; revision=196461
@ -234,3 +234,17 @@ pqueue_next(pitem **item)
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
pqueue_size(pqueue_s *pq)
|
||||||
|
{
|
||||||
|
pitem *item = pq->items;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
while(item != NULL)
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
item = item->next;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
@ -91,5 +91,6 @@ pitem *pqueue_iterator(pqueue pq);
|
|||||||
pitem *pqueue_next(piterator *iter);
|
pitem *pqueue_next(piterator *iter);
|
||||||
|
|
||||||
void pqueue_print(pqueue pq);
|
void pqueue_print(pqueue pq);
|
||||||
|
int pqueue_size(pqueue pq);
|
||||||
|
|
||||||
#endif /* ! HEADER_PQUEUE_H */
|
#endif /* ! HEADER_PQUEUE_H */
|
||||||
|
@ -167,6 +167,10 @@ dtls1_buffer_record(SSL *s, record_pqueue *queue, PQ_64BIT priority)
|
|||||||
DTLS1_RECORD_DATA *rdata;
|
DTLS1_RECORD_DATA *rdata;
|
||||||
pitem *item;
|
pitem *item;
|
||||||
|
|
||||||
|
/* Limit the size of the queue to prevent DOS attacks */
|
||||||
|
if (pqueue_size(queue->q) >= 100)
|
||||||
|
return 0;
|
||||||
|
|
||||||
rdata = OPENSSL_malloc(sizeof(DTLS1_RECORD_DATA));
|
rdata = OPENSSL_malloc(sizeof(DTLS1_RECORD_DATA));
|
||||||
item = pitem_new(priority, rdata);
|
item = pitem_new(priority, rdata);
|
||||||
if (rdata == NULL || item == NULL)
|
if (rdata == NULL || item == NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user