diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2020-08-17 18:16:01 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2020-08-17 19:31:01 +0000 |
commit | 952e46fb567c23f07fff1bb5e379fcaad2e24f48 (patch) | |
tree | 8855dbcd1d0465f0e47eabe82791e6e1c8bc597e /epan/dissectors/packet-tds.c | |
parent | 1b88c727764b50e6f99b302e085a6ba7aa1df403 (diff) |
TDS7: Make sure to populate pre-login message tree for all tokens
Change-Id: I07bc540efe94ad8f93bd460f4dd23310285fb4e0
Reviewed-on: https://code.wireshark.org/review/38181
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-tds.c')
-rw-r--r-- | epan/dissectors/packet-tds.c | 101 |
1 files changed, 51 insertions, 50 deletions
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c index 79385c4cce..2a60d286ba 100644 --- a/epan/dissectors/packet-tds.c +++ b/epan/dissectors/packet-tds.c @@ -4125,7 +4125,10 @@ dissect_tds7_prelogin_packet(tvbuff_t *tvb, proto_tree *tree, tds_conv_info_t *t offset += 1; if(token == TDS7_PRELOGIN_OPTION_TERMINATOR) + { + proto_item_append_text(option_item, ": Terminator"); break; + } tokenoffset = tvb_get_ntohs(tvb, offset); proto_tree_add_item(option_tree, hf_tds_prelogin_option_offset, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -4135,58 +4138,56 @@ dissect_tds7_prelogin_packet(tvbuff_t *tvb, proto_tree *tree, tds_conv_info_t *t proto_tree_add_item(option_tree, hf_tds_prelogin_option_length, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; - if(tokenlen != 0) + switch(token) { - switch(token) - { - case TDS7_PRELOGIN_OPTION_VERSION: { - guint32 version; - proto_item_append_text(option_item, ": Version"); - proto_tree_add_item_ret_uint(option_tree, hf_tds_prelogin_option_version, - tvb, tokenoffset, 4, ENC_BIG_ENDIAN, - &version); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_subbuild, tvb, tokenoffset + 4, 2, ENC_LITTLE_ENDIAN); - /* This gives us a better idea of what protocol we'll see. */ - if (is_response) { - set_tds_version(tds_info, version); - } - break; - } - case TDS7_PRELOGIN_OPTION_ENCRYPTION: { - proto_item_append_text(option_item, ": Encryption"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_encryption, tvb, tokenoffset, 1, ENC_NA); - break; - } - case TDS7_PRELOGIN_OPTION_INSTOPT: { - proto_item_append_text(option_item, ": InstOpt"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_instopt, tvb, tokenoffset, tokenlen, ENC_ASCII | ENC_NA); - break; - } - case TDS7_PRELOGIN_OPTION_THREADID: { - proto_item_append_text(option_item, ": ThreadID"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_threadid, tvb, tokenoffset, 4, ENC_BIG_ENDIAN); - break; - } - case TDS7_PRELOGIN_OPTION_MARS: { - proto_item_append_text(option_item, ": MARS"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_mars, tvb, tokenoffset, 1, ENC_NA); - break; - } - case TDS7_PRELOGIN_OPTION_TRACEID: { - proto_item_append_text(option_item, ": TraceID"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_traceid, tvb, tokenoffset, tokenlen, ENC_NA); - break; - } - case TDS7_PRELOGIN_OPTION_FEDAUTHREQUIRED: { - proto_item_append_text(option_item, ": FedAuthRequired"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_fedauthrequired, tvb, tokenoffset, 1, ENC_NA); - break; - } - case TDS7_PRELOGIN_OPTION_NONCEOPT: { - proto_item_append_text(option_item, ": NonceOpt"); - proto_tree_add_item(option_tree, hf_tds_prelogin_option_nonceopt, tvb, tokenoffset, tokenlen, ENC_NA); - break; + case TDS7_PRELOGIN_OPTION_VERSION: { + guint32 version; + proto_item_append_text(option_item, ": Version"); + proto_tree_add_item_ret_uint(option_tree, hf_tds_prelogin_option_version, + tvb, tokenoffset, 4, ENC_BIG_ENDIAN, + &version); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_subbuild, tvb, tokenoffset + 4, 2, ENC_LITTLE_ENDIAN); + /* This gives us a better idea of what protocol we'll see. */ + if (is_response) { + set_tds_version(tds_info, version); } + break; + } + case TDS7_PRELOGIN_OPTION_ENCRYPTION: { + proto_item_append_text(option_item, ": Encryption"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_encryption, tvb, tokenoffset, tokenlen, ENC_NA); + break; + } + case TDS7_PRELOGIN_OPTION_INSTOPT: { + proto_item_append_text(option_item, ": InstOpt"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_instopt, tvb, tokenoffset, tokenlen, ENC_ASCII | ENC_NA); + break; + } + case TDS7_PRELOGIN_OPTION_THREADID: { + proto_item_append_text(option_item, ": ThreadID"); + if (tokenlen > 0) + proto_tree_add_item(option_tree, hf_tds_prelogin_option_threadid, tvb, tokenoffset, tokenlen, ENC_BIG_ENDIAN); + break; + } + case TDS7_PRELOGIN_OPTION_MARS: { + proto_item_append_text(option_item, ": MARS"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_mars, tvb, tokenoffset, tokenlen, ENC_NA); + break; + } + case TDS7_PRELOGIN_OPTION_TRACEID: { + proto_item_append_text(option_item, ": TraceID"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_traceid, tvb, tokenoffset, tokenlen, ENC_NA); + break; + } + case TDS7_PRELOGIN_OPTION_FEDAUTHREQUIRED: { + proto_item_append_text(option_item, ": FedAuthRequired"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_fedauthrequired, tvb, tokenoffset, tokenlen, ENC_NA); + break; + } + case TDS7_PRELOGIN_OPTION_NONCEOPT: { + proto_item_append_text(option_item, ": NonceOpt"); + proto_tree_add_item(option_tree, hf_tds_prelogin_option_nonceopt, tvb, tokenoffset, tokenlen, ENC_NA); + break; } } } |