source: branches/8.09/package/openssl/patches/405-cve-2009-1387.patch @ 17361

Last change on this file since 17361 was 17361, checked in by nico, 7 years ago

[8.09] openssl: fix 4 DoS vulnerabilities in DTLS

  • CVE-2009-1377
  • CVE-2009-1378
  • CVE-2009-1379
  • CVE-2009-1387
File size: 1.2 KB
  • ssl/d1_both.c

    http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1387
    
    a b dtls1_process_out_of_seq_message(SSL *s, 
    585585                        } 
    586586                } 
    587587 
    588         frag = dtls1_hm_fragment_new(frag_len); 
    589         if ( frag == NULL) 
    590                 goto err; 
     588        if (frag_len) 
     589        { 
     590                frag = dtls1_hm_fragment_new(frag_len); 
     591                if ( frag == NULL) 
     592                        goto err; 
    591593 
    592         memcpy(&(frag->msg_header), msg_hdr, sizeof(*msg_hdr)); 
     594                memcpy(&(frag->msg_header), msg_hdr, sizeof(*msg_hdr)); 
    593595 
    594         if (frag_len) 
    595                 { 
    596                 /* read the body of the fragment (header has already been read */ 
     596                /* read the body of the fragment (header has already been read) */ 
    597597                i = s->method->ssl_read_bytes(s,SSL3_RT_HANDSHAKE, 
    598598                        frag->fragment,frag_len,0); 
    599599                if (i<=0 || (unsigned long)i!=frag_len) 
    600600                        goto err; 
    601                 } 
    602601 
    603         pq_64bit_init(&seq64); 
    604         pq_64bit_assign_word(&seq64, msg_hdr->seq); 
     602                pq_64bit_init(&seq64); 
     603                pq_64bit_assign_word(&seq64, msg_hdr->seq); 
    605604 
    606         item = pitem_new(seq64, frag); 
    607         pq_64bit_free(&seq64); 
    608         if ( item == NULL) 
    609                 goto err; 
     605                item = pitem_new(seq64, frag); 
     606                pq_64bit_free(&seq64); 
     607                if ( item == NULL) 
     608                        goto err; 
     609 
     610                pqueue_insert(s->d1->buffered_messages, item); 
     611        } 
    610612 
    611         pqueue_insert(s->d1->buffered_messages, item); 
    612613        return DTLS1_HM_FRAGMENT_RETRY; 
    613614 
    614615err: 
Note: See TracBrowser for help on using the repository browser.