forked from osmocom/wireshark
dcbd3874d3
Add a tlsinfo struct that is similar to tcpinfo, and carries the sequence number (within the TLS stream) and the end of stream notification (from the TCP FIN or close_notify alerts) in addition to the session app handle pointer already used by TLS heuristic dissectors. Have HTTP use the end of stream notification in order to handle DESEGMENT_UNTIL_FIN the same way it does when HTTP is directly over TCP. Also have HTTP use the sequence number in order to reduce chunked processing from O(N^2) to O(N) similar to done over TCP. Update all the TLS heuristic dissectors that set the app handle to use the new structure. Note the workaround for the issue #15159 - the TLS dissector has to report to the TCP dissector that desegmentation at FIN is required, so that the TCP dissector will know to call the TLS dissector at FIN. However, the TLS dissector does not request that the TCP dissector resend bytes belonging to records that TLS has already desegmented (and decrypted, if possible), to avoid decrypting twice (and upsetting the decoder state.) This can mean the TCP dissector calling the TLS dissector to desegment at FIN with a zero byte payload. In such as case, the TLS dissector artificially returns "1" byte dissected to avoid indicating rejecting the payload and having the TLS (and subdissector) layers removed. (TCP ignores the value returned when desegmenting at FIN.) Fix #9154. Fix #14382. |
||
---|---|---|
.. | ||
crypt | ||
dfilter | ||
dissectors | ||
ftypes | ||
wslua | ||
.editorconfig | ||
CMakeLists.txt | ||
addr_and_mask.c | ||
addr_and_mask.h | ||
addr_resolv.c | ||
addr_resolv.h | ||
address.h | ||
address_types.c | ||
address_types.h | ||
afn.c | ||
afn.h | ||
aftypes.c | ||
aftypes.h | ||
app_mem_usage.c | ||
app_mem_usage.h | ||
arcnet_pids.h | ||
arptypes.h | ||
asn1.c | ||
asn1.h | ||
ax25_pids.h | ||
bridged_pids.h | ||
capture_dissectors.c | ||
capture_dissectors.h | ||
charsets.c | ||
charsets.h | ||
chdlctypes.h | ||
cisco_pid.h | ||
color_filters.c | ||
color_filters.h | ||
column-info.h | ||
column-utils.c | ||
column-utils.h | ||
column.c | ||
column.h | ||
conv_id.h | ||
conversation.c | ||
conversation.h | ||
conversation_debug.h | ||
conversation_filter.c | ||
conversation_filter.h | ||
conversation_table.c | ||
conversation_table.h | ||
crc6-tvb.c | ||
crc6-tvb.h | ||
crc8-tvb.c | ||
crc8-tvb.h | ||
crc10-tvb.c | ||
crc10-tvb.h | ||
crc16-tvb.c | ||
crc16-tvb.h | ||
crc32-tvb.c | ||
crc32-tvb.h | ||
dccpservicecodes.h | ||
decode_as.c | ||
decode_as.h | ||
diam_dict.h | ||
diam_dict.l | ||
disabled_protos.c | ||
disabled_protos.h | ||
dtd.h | ||
dtd_grammar.lemon | ||
dtd_parse.h | ||
dtd_parse.l | ||
dtd_preparse.l | ||
dvb_chartbl.c | ||
dvb_chartbl.h | ||
eap.h | ||
eapol_keydes_types.h | ||
epan.c | ||
epan.h | ||
epan_dissect.h | ||
etypes.h | ||
ex-opt.c | ||
ex-opt.h | ||
except.c | ||
except.h | ||
exceptions.h | ||
exntest.c | ||
expert.c | ||
expert.h | ||
export_object.c | ||
export_object.h | ||
exported_pdu.c | ||
exported_pdu.h | ||
filter_expressions.c | ||
filter_expressions.h | ||
follow.c | ||
follow.h | ||
frame_data.c | ||
frame_data.h | ||
frame_data_sequence.c | ||
frame_data_sequence.h | ||
funnel.c | ||
funnel.h | ||
golay.c | ||
golay.h | ||
guid-utils.c | ||
guid-utils.h | ||
iana_charsets.c | ||
iana_charsets.h | ||
iax2_codec_type.h | ||
in_cksum.c | ||
in_cksum.h | ||
introspection-enums.c | ||
introspection.c | ||
introspection.h | ||
ip_opts.h | ||
ipproto.c | ||
ipproto.h | ||
ipv4.h | ||
ipv6.h | ||
lapd_sapi.h | ||
llcsaps.h | ||
maxmind_db.c | ||
maxmind_db.h | ||
media_params.c | ||
media_params.h | ||
next_tvb.c | ||
next_tvb.h | ||
nlpid.h | ||
oids.c | ||
oids.h | ||
oids_test.c | ||
osi-utils.c | ||
osi-utils.h | ||
oui.h | ||
packet.c | ||
packet.h | ||
packet_info.h | ||
params.h | ||
pci-ids.c | ||
pci-ids.h | ||
plugin_if.c | ||
plugin_if.h | ||
ppptypes.h | ||
prefs-int.h | ||
prefs.c | ||
prefs.h | ||
print.c | ||
print.h | ||
print.ps | ||
print_stream.c | ||
print_stream.h | ||
proto.c | ||
proto.h | ||
proto_data.c | ||
proto_data.h | ||
protobuf-helper.c | ||
protobuf-helper.h | ||
protobuf_lang_parser.lemon | ||
protobuf_lang_scanner.l | ||
protobuf_lang_tree.c | ||
protobuf_lang_tree.h | ||
ps.h | ||
ptvcursor.h | ||
radius_dict.l | ||
range.c | ||
range.h | ||
reassemble.c | ||
reassemble.h | ||
reassemble_test.c | ||
reedsolomon.c | ||
reedsolomon.h | ||
register-int.h | ||
register.c | ||
register.h | ||
req_resp_hdrs.c | ||
req_resp_hdrs.h | ||
rtd_table.c | ||
rtd_table.h | ||
rtp_pt.h | ||
sctpppids.c | ||
sctpppids.h | ||
secrets.c | ||
secrets.h | ||
sequence_analysis.c | ||
sequence_analysis.h | ||
show_exception.c | ||
show_exception.h | ||
slow_protocol_subtypes.h | ||
sminmpec.h | ||
srt_table.c | ||
srt_table.h | ||
stat_groups.h | ||
stat_tap_ui.c | ||
stat_tap_ui.h | ||
stats_tree.c | ||
stats_tree.h | ||
stats_tree_priv.h | ||
stream.c | ||
stream.h | ||
strutil.c | ||
strutil.h | ||
t35.c | ||
t35.h | ||
tap-voip.h | ||
tap.c | ||
tap.h | ||
test_epan.c | ||
tfs.c | ||
tfs.h | ||
timestamp.c | ||
timestamp.h | ||
timestats.c | ||
timestats.h | ||
to_str.c | ||
to_str.h | ||
tvbparse.c | ||
tvbparse.h | ||
tvbtest.c | ||
tvbuff-int.h | ||
tvbuff.c | ||
tvbuff.h | ||
tvbuff_base64.c | ||
tvbuff_brotli.c | ||
tvbuff_composite.c | ||
tvbuff_lz77.c | ||
tvbuff_lz77huff.c | ||
tvbuff_lznt1.c | ||
tvbuff_rdp.c | ||
tvbuff_rdp.h | ||
tvbuff_real.c | ||
tvbuff_subset.c | ||
tvbuff_zlib.c | ||
uat-int.h | ||
uat.c | ||
uat.h | ||
uat_load.l | ||
unit_strings.c | ||
unit_strings.h | ||
value_string.c | ||
value_string.h | ||
wmem_scopes.c | ||
wmem_scopes.h | ||
ws_printf.h | ||
wscbor.c | ||
wscbor.h | ||
wscbor_test.c | ||
x264_prt_id.h | ||
xdlc.c | ||
xdlc.h |