Wireshark-commits: [Wireshark-commits] rev 48909: /trunk/epan/ /trunk/epan/: reassemble.c reassembl

Date: Thu, 18 Apr 2013 02:31:46 GMT
http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=48909

User: guy
Date: 2013/04/17 07:31 PM

Log:
 When we throw a reassembly error, remember the error, so that, if we
 revisit this reassembly (in a multi-pass program such as Wireshark, or
 TShark with -2), we'll throw the same error.
 
 In fragment_set_tot_len(), allow the length to be set to a value that's
 before the offset of existing fragments; we'll catch that later when the
 reassembly completes.  This lets us handle some problems with DTLS less
 confusingly.
 
 When adding frames to an already-completed reassembly, check for
 fragments that overlap existing fragments or go past the end of the
 reassembly, and report errors.
 
 When completing a reassembly, make the buffer for the reassembled data
 big enough to contain the specified data length for the reassembly, even
 if that's less than the offset + length of the last fragment.  Flag all
 fragments that go past that length as "too long", and only copy out what
 part of them fits, if any.  That lets us flag the correct fragment or
 fragments as being "too long".
 
 When adding fragments, do some additional checks, even if we're not
 doing the first pass through the packets, so errors that show up in the
 first pass also show up on subsequent passes.

Directory: /trunk/epan/
  Changes    Path            Action
  +286 -105  reassemble.c    Modified
  +21 -7     reassemble.h    Modified