forked from osmocom/wireshark
Handle snaplen before choplen for consistency. Also, if chopping more bytes
than present, just chop all by setting caplen to 0. In all cases, don't touch len. In other words, change incl_len but leave orig_len alone. svn path=/trunk/; revision=37488
This commit is contained in:
parent
c681f0434e
commit
91bd619c64
31
editcap.c
31
editcap.c
|
@ -1221,26 +1221,29 @@ main(int argc, char *argv[])
|
|||
|
||||
phdr = wtap_phdr(wth);
|
||||
|
||||
if (choplen < 0 && (phdr->caplen + choplen) > 0) {
|
||||
snap_phdr = *phdr;
|
||||
snap_phdr.caplen += choplen;
|
||||
phdr = &snap_phdr;
|
||||
}
|
||||
|
||||
if (choplen > 0 && phdr->caplen > (unsigned int) choplen) {
|
||||
snap_phdr = *phdr;
|
||||
snap_phdr.caplen -= choplen;
|
||||
snap_phdr.len -= choplen;
|
||||
buf += choplen;
|
||||
phdr = &snap_phdr;
|
||||
}
|
||||
|
||||
if (snaplen != 0 && phdr->caplen > snaplen) {
|
||||
snap_phdr = *phdr;
|
||||
snap_phdr.caplen = snaplen;
|
||||
phdr = &snap_phdr;
|
||||
}
|
||||
|
||||
if (choplen < 0) {
|
||||
snap_phdr = *phdr;
|
||||
if (((signed int) phdr->caplen + choplen) > 0)
|
||||
snap_phdr.caplen += choplen;
|
||||
else
|
||||
snap_phdr.caplen = 0;
|
||||
phdr = &snap_phdr;
|
||||
} else if (choplen > 0) {
|
||||
snap_phdr = *phdr;
|
||||
if (phdr->caplen > (unsigned int) choplen) {
|
||||
snap_phdr.caplen -= choplen;
|
||||
buf += choplen;
|
||||
} else
|
||||
snap_phdr.caplen = 0;
|
||||
phdr = &snap_phdr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Do we adjust timestamps to insure strict chronologically order?
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue