PR: 2218
Submitted By: Robin Seggelmann <seggelmann@fh-muenster.de> Fixes for DTLS replay bug.
This commit is contained in:
		
							
								
								
									
										19
									
								
								ssl/d1_pkt.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								ssl/d1_pkt.c
									
									
									
									
									
								
							@@ -624,15 +624,16 @@ again:
 | 
				
			|||||||
	/* just read a 0 length packet */
 | 
						/* just read a 0 length packet */
 | 
				
			||||||
	if (rr->length == 0) goto again;
 | 
						if (rr->length == 0) goto again;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* If this record is from the next epoch (either HM or ALERT), buffer it
 | 
						/* If this record is from the next epoch (either HM or ALERT),
 | 
				
			||||||
     * since it cannot be processed at this time.
 | 
						 * and a handshake is currently in progress, buffer it since it
 | 
				
			||||||
     * Records from the next epoch are marked as received even though they are 
 | 
						 * cannot be processed at this time. */
 | 
				
			||||||
     * not processed, so as to prevent any potential resource DoS attack */
 | 
						if (is_next_epoch)
 | 
				
			||||||
    if (is_next_epoch)
 | 
							{
 | 
				
			||||||
        {
 | 
							if (SSL_in_init(s) || s->in_handshake)
 | 
				
			||||||
        dtls1_record_bitmap_update(s, bitmap);
 | 
								{
 | 
				
			||||||
        dtls1_buffer_record(s, &(s->d1->unprocessed_rcds), &rr->seq_num);
 | 
								dtls1_buffer_record(s, &(s->d1->unprocessed_rcds), rr->seq_num);
 | 
				
			||||||
	rr->length = 0;
 | 
								}
 | 
				
			||||||
 | 
							rr->length = 0;
 | 
				
			||||||
        s->packet_length = 0;
 | 
					        s->packet_length = 0;
 | 
				
			||||||
        goto again;
 | 
					        goto again;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user