d1_both.c (264331) | d1_both.c (267103) |
---|---|
1/* ssl/d1_both.c */ 2/* 3 * DTLS implementation written by Nagendra Modadugu 4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 5 */ 6/* ==================================================================== 7 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. 8 * --- 613 unchanged lines hidden (view full) --- 622 frag = dtls1_hm_fragment_new(msg_hdr->msg_len, 1); 623 if ( frag == NULL) 624 goto err; 625 memcpy(&(frag->msg_header), msg_hdr, sizeof(*msg_hdr)); 626 frag->msg_header.frag_len = frag->msg_header.msg_len; 627 frag->msg_header.frag_off = 0; 628 } 629 else | 1/* ssl/d1_both.c */ 2/* 3 * DTLS implementation written by Nagendra Modadugu 4 * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. 5 */ 6/* ==================================================================== 7 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. 8 * --- 613 unchanged lines hidden (view full) --- 622 frag = dtls1_hm_fragment_new(msg_hdr->msg_len, 1); 623 if ( frag == NULL) 624 goto err; 625 memcpy(&(frag->msg_header), msg_hdr, sizeof(*msg_hdr)); 626 frag->msg_header.frag_len = frag->msg_header.msg_len; 627 frag->msg_header.frag_off = 0; 628 } 629 else |
630 { |
|
630 frag = (hm_fragment*) item->data; | 631 frag = (hm_fragment*) item->data; |
632 if (frag->msg_header.msg_len != msg_hdr->msg_len) 633 { 634 item = NULL; 635 frag = NULL; 636 goto err; 637 } 638 } |
|
631 | 639 |
640 |
|
632 /* If message is already reassembled, this must be a 633 * retransmit and can be dropped. 634 */ 635 if (frag->reassembly == NULL) 636 { 637 unsigned char devnull [256]; 638 639 while (frag_len) --- 139 unchanged lines hidden (view full) --- 779static long 780dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) 781 { 782 unsigned char wire[DTLS1_HM_HEADER_LENGTH]; 783 unsigned long len, frag_off, frag_len; 784 int i,al; 785 struct hm_header_st msg_hdr; 786 | 641 /* If message is already reassembled, this must be a 642 * retransmit and can be dropped. 643 */ 644 if (frag->reassembly == NULL) 645 { 646 unsigned char devnull [256]; 647 648 while (frag_len) --- 139 unchanged lines hidden (view full) --- 788static long 789dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) 790 { 791 unsigned char wire[DTLS1_HM_HEADER_LENGTH]; 792 unsigned long len, frag_off, frag_len; 793 int i,al; 794 struct hm_header_st msg_hdr; 795 |
796 redo: |
|
787 /* see if we have the required fragment already */ 788 if ((frag_len = dtls1_retrieve_buffered_fragment(s,max,ok)) || *ok) 789 { 790 if (*ok) s->init_num = frag_len; 791 return frag_len; 792 } 793 794 /* read handshake message header */ --- 42 unchanged lines hidden (view full) --- 837 if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) 838 { 839 if (s->msg_callback) 840 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, 841 wire, DTLS1_HM_HEADER_LENGTH, s, 842 s->msg_callback_arg); 843 844 s->init_num = 0; | 797 /* see if we have the required fragment already */ 798 if ((frag_len = dtls1_retrieve_buffered_fragment(s,max,ok)) || *ok) 799 { 800 if (*ok) s->init_num = frag_len; 801 return frag_len; 802 } 803 804 /* read handshake message header */ --- 42 unchanged lines hidden (view full) --- 847 if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) 848 { 849 if (s->msg_callback) 850 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, 851 wire, DTLS1_HM_HEADER_LENGTH, s, 852 s->msg_callback_arg); 853 854 s->init_num = 0; |
845 return dtls1_get_message_fragment(s, st1, stn, 846 max, ok); | 855 goto redo; |
847 } 848 else /* Incorrectly formated Hello request */ 849 { 850 al=SSL_AD_UNEXPECTED_MESSAGE; 851 SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE); 852 goto f_err; 853 } 854 } --- 754 unchanged lines hidden --- | 856 } 857 else /* Incorrectly formated Hello request */ 858 { 859 al=SSL_AD_UNEXPECTED_MESSAGE; 860 SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE); 861 goto f_err; 862 } 863 } --- 754 unchanged lines hidden --- |