aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-woww.c
diff options
context:
space:
mode:
authorGtker <wireshark@gtker.com>2021-07-22 16:59:22 +0200
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2021-07-24 07:42:00 +0000
commit5b69cae53d5b1c11333d527ae3c1f416947ae33a (patch)
tree1807fe6a29ba82305e98a5d950aa928739d1249a /epan/dissectors/packet-woww.c
parentd5f7f80d7b72d71680ee13bbac2d1a79df404837 (diff)
WOWW: Add type for decrypted header
Diffstat (limited to 'epan/dissectors/packet-woww.c')
-rw-r--r--epan/dissectors/packet-woww.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/epan/dissectors/packet-woww.c b/epan/dissectors/packet-woww.c
index 5e2771c4ed..fdc9418a5a 100644
--- a/epan/dissectors/packet-woww.c
+++ b/epan/dissectors/packet-woww.c
@@ -118,6 +118,11 @@ typedef struct {
guint8 last_encrypted_value;
} WowwPreviousValues_t;
+typedef struct {
+ guint8 size[2];
+ guint8 opcode[];
+} WowwDecryptedHeader_t;
+
// All existing opcodes for 1.12.x
typedef enum
{
@@ -1998,7 +2003,7 @@ session_key_is_fully_deduced(const bool known_indices[WOWW_SESSION_KEY_LENGTH],
}
/*! Returns either a pointer to a valid decrypted header, or NULL if no such header exists yet. */
-static guint8*
+static WowwDecryptedHeader_t*
handle_packet_header(packet_info* pinfo,
tvbuff_t* tvb,
WowwParticipant_t* participant,
@@ -2009,7 +2014,7 @@ handle_packet_header(packet_info* pinfo,
if (decrypted_header) {
// Header has already been decrypted
- return decrypted_header;
+ return (WowwDecryptedHeader_t*)decrypted_header;
}
// First time we see this header, we need to decrypt it
@@ -2030,7 +2035,7 @@ handle_packet_header(packet_info* pinfo,
wmem_tree_insert32(wowwConversation->decrypted_headers, pinfo->num, decrypted_header);
- return decrypted_header;
+ return (WowwDecryptedHeader_t*)decrypted_header;
}
WowwPreviousValues_t * original_header_values = wmem_tree_lookup32(wowwConversation->headers_need_decryption, pinfo->num);
@@ -2086,11 +2091,11 @@ handle_packet_header(packet_info* pinfo,
// The header has been fully decrypted, cache it for future use
wmem_tree_insert32(wowwConversation->decrypted_headers, pinfo->num, decrypted_header);
- return decrypted_header;
+ return (WowwDecryptedHeader_t*)decrypted_header;
}
static void
-add_header_to_tree(guint8 decrypted_header[],
+add_header_to_tree(WowwDecryptedHeader_t* decrypted_header,
proto_tree* tree,
tvbuff_t* tvb,
packet_info* pinfo,
@@ -2098,14 +2103,14 @@ add_header_to_tree(guint8 decrypted_header[],
{
const guint16 size_field_width = 2;
// Size field does not count in the reported size, so we need to add it.
- const guint16 packet_size = (decrypted_header[0] << 8 | decrypted_header[1]) + size_field_width;
+ const guint16 packet_size = (decrypted_header->size[0] << 8 | decrypted_header->size[1]) + size_field_width;
proto_tree* ti = proto_tree_add_item(tree, proto_woww, tvb, 0, packet_size, ENC_NA);
proto_tree* woww_tree = proto_item_add_subtree(ti, ett_woww);
// Add to tree
- tvbuff_t *next_tvb = tvb_new_child_real_data(tvb, decrypted_header, headerSize, headerSize);
+ tvbuff_t *next_tvb = tvb_new_child_real_data(tvb, (guint8*)decrypted_header, headerSize, headerSize);
add_new_data_source(pinfo, next_tvb, "Decrypted Header");
// We're indexing into another tvb
@@ -2175,7 +2180,7 @@ dissect_woww(tvbuff_t *tvb,
headerSize = 6;
}
- guint8* decrypted_header = handle_packet_header(pinfo, tvb, participant, wowwConversation, headerSize);
+ WowwDecryptedHeader_t* decrypted_header = handle_packet_header(pinfo, tvb, participant, wowwConversation, headerSize);
if (!decrypted_header) {
return tvb_captured_length(tvb);
}