diff options
author | Guy Harris <gharris@sonic.net> | 2021-03-28 17:55:23 -0700 |
---|---|---|
committer | Guy Harris <gharris@sonic.net> | 2021-03-29 01:02:47 +0000 |
commit | 2ba52cdc0e4216dafdfc32498fc0210c99449ec9 (patch) | |
tree | 44ff0f94da1ee954efda01f4fd00dbd80abace04 /capture | |
parent | 22cf2cb345b16f9783165e9cfc80ed9a97a11ca0 (diff) |
tvbuff_subset: fix its implementation of string scanning.
Both subset_find_guint8() and subset_pbrk_guint8() pass the parent
tvbuff to tvb_find_guint8()/tvb_ws_mempbrk_pattern_guint8(), along with
the offset in that tvbuff.
That means that the offset they get back is relative to that tvbuff, so
it must be adjusted to be relative to the tvbuff *they* were handed.
For subsets of frame and "real data" tvbuffs, there's a single lump of
data containing the content of the subset tvbuff, so they go through the
"fast path" and get the offset correct, bypassing the broken code;
that's the vast majority of calls to those routines.
For subsets of *composite* tvbuffs, however, they don't go through the
"fast path", and this bug shows up.
This causes both crashes and misdissection of HTTP if the link-layer is
PPP with Van Jacobson compression, as the decompression uses composite
tvbuffs.
Fixes #17254 and its many soon-to-be-duplicates.
Diffstat (limited to 'capture')
0 files changed, 0 insertions, 0 deletions