forked from osmocom/wireshark
From Tom Uijldert: modify MMSE dissector to also accept content that is
not multipart. Replace my fix to create subtrees for POST data with Tom's. svn path=/trunk/; revision=5968
This commit is contained in:
parent
1c7b05f665
commit
48dbb301c8
|
@ -2,7 +2,7 @@
|
|||
* Routines for MMS Message Encapsulation dissection
|
||||
* Copyright 2001, Tom Uijldert <tom.uijldert@cmg.nl>
|
||||
*
|
||||
* $Id: packet-mmse.c,v 1.15 2002/08/05 08:37:45 guy Exp $
|
||||
* $Id: packet-mmse.c,v 1.16 2002/08/07 08:34:55 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -613,8 +613,7 @@ dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
if (field == MM_CTYPE_HDR) {
|
||||
/*
|
||||
* Eeehh, we're now actually back to good old WSP content-type
|
||||
* encoding for multipart/related and multipart/mixed MIME-types.
|
||||
* Let's steal that from the WSP-dissector.
|
||||
* encoding. Let's steal that from the WSP-dissector.
|
||||
*/
|
||||
tvbuff_t *tmp_tvb;
|
||||
guint type;
|
||||
|
@ -622,7 +621,7 @@ dissect_mmse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
|||
|
||||
offset = add_content_type(mmse_tree, tvb, offset, &type, &type_str);
|
||||
tmp_tvb = tvb_new_subset(tvb, offset, -1, -1);
|
||||
add_multipart_data(mmse_tree, tmp_tvb);
|
||||
add_post_data(mmse_tree, tmp_tvb, type, type_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
27
packet-wsp.c
27
packet-wsp.c
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* Routines to dissect WSP component of WAP traffic.
|
||||
*
|
||||
* $Id: packet-wsp.c,v 1.60 2002/08/02 23:36:04 jmayer Exp $
|
||||
* $Id: packet-wsp.c,v 1.61 2002/08/07 08:34:55 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -192,12 +192,12 @@ static gint ett_header_warning = ETT_EMPTY;
|
|||
static gint ett_header_cache_control_parameters = ETT_EMPTY;
|
||||
static gint ett_header_cache_control_field_names = ETT_EMPTY;
|
||||
static gint ett_capabilities = ETT_EMPTY;
|
||||
static gint ett_post = ETT_EMPTY;
|
||||
static gint ett_content_type = ETT_EMPTY;
|
||||
static gint ett_redirect_flags = ETT_EMPTY;
|
||||
static gint ett_redirect_afl = ETT_EMPTY;
|
||||
static gint ett_multiparts = ETT_EMPTY;
|
||||
static gint ett_mpartlist = ETT_EMPTY;
|
||||
static gint ett_post_data = ETT_EMPTY;
|
||||
|
||||
/* Handle for WSP-over-UDP dissector */
|
||||
static dissector_handle_t wsp_fromudp_handle;
|
||||
|
@ -944,8 +944,8 @@ static int add_parameter_charset (proto_tree *, tvbuff_t *, int, int);
|
|||
static int add_constrained_encoding (proto_tree *, tvbuff_t *, int, int);
|
||||
static int add_parameter_type (proto_tree *, tvbuff_t *, int, int);
|
||||
static int add_parameter_text (proto_tree *, tvbuff_t *, int, int, int, const char *);
|
||||
static void add_post_data (proto_tree *, tvbuff_t *, guint, const char *);
|
||||
static void add_post_variable (proto_tree *, tvbuff_t *, guint, guint, guint, guint);
|
||||
static void add_multipart_data (proto_tree *, tvbuff_t *);
|
||||
static void add_pragma_header (proto_tree *, tvbuff_t *, int, tvbuff_t *,
|
||||
value_type_t, int);
|
||||
static void add_transfer_encoding_header (proto_tree *, tvbuff_t *, int,
|
||||
|
@ -1343,8 +1343,7 @@ dissect_wsp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
|
|||
/* Runs from start of headers+headerLength to end of frame */
|
||||
offset = nextOffset+headerLength;
|
||||
tmp_tvb = tvb_new_subset (tvb, offset, tvb_reported_length (tvb)-offset, tvb_reported_length (tvb)-offset);
|
||||
add_post_data (wsp_tree, tmp_tvb,
|
||||
contentType, contentTypeStr);
|
||||
add_post_data (wsp_tree, tmp_tvb, contentType, contentTypeStr);
|
||||
}
|
||||
if (tvb_reported_length_remaining(tvb, headerStart + count + uriLength + headersLength) > 0)
|
||||
{
|
||||
|
@ -3786,7 +3785,7 @@ add_parameter_text (proto_tree *tree, tvbuff_t *value_buff, int startOffset,
|
|||
return offset;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
add_post_data (proto_tree *tree, tvbuff_t *tvb, guint contentType,
|
||||
const char *contentTypeStr)
|
||||
{
|
||||
|
@ -3797,11 +3796,11 @@ add_post_data (proto_tree *tree, tvbuff_t *tvb, guint contentType,
|
|||
guint valueEnd = 0;
|
||||
guint8 peek = 0;
|
||||
proto_item *ti;
|
||||
proto_tree *subtree;
|
||||
proto_tree *sub_tree;
|
||||
|
||||
/* VERIFY ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian); */
|
||||
ti = proto_tree_add_item (tree, hf_wsp_post_data,tvb,offset,-1,bo_little_endian);
|
||||
subtree = proto_item_add_subtree(ti, ett_post_data);
|
||||
sub_tree = proto_item_add_subtree(ti, ett_post);
|
||||
|
||||
if (contentTypeStr == NULL && contentType == 0x12)
|
||||
{
|
||||
|
@ -3821,7 +3820,7 @@ add_post_data (proto_tree *tree, tvbuff_t *tvb, guint contentType,
|
|||
{
|
||||
if (variableEnd > 0)
|
||||
{
|
||||
add_post_variable (subtree, tvb, variableStart, variableEnd, valueStart, offset);
|
||||
add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
|
||||
}
|
||||
variableStart = offset+1;
|
||||
variableEnd = 0;
|
||||
|
@ -3833,13 +3832,13 @@ add_post_data (proto_tree *tree, tvbuff_t *tvb, guint contentType,
|
|||
/* See if there's outstanding data */
|
||||
if (variableEnd > 0)
|
||||
{
|
||||
add_post_variable (subtree, tvb, variableStart, variableEnd, valueStart, offset);
|
||||
add_post_variable (sub_tree, tvb, variableStart, variableEnd, valueStart, offset);
|
||||
}
|
||||
}
|
||||
else if ((contentType == 0x22) || (contentType == 0x23) || (contentType == 0x23) || (contentType == 0x24) ||
|
||||
(contentType == 0x25) || (contentType == 0x26) || (contentType == 0x33))
|
||||
{
|
||||
add_multipart_data(subtree, tvb);
|
||||
add_multipart_data(sub_tree, tvb);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3883,7 +3882,7 @@ add_post_variable (proto_tree *tree, tvbuff_t *tvb, guint variableStart, guint v
|
|||
g_free (valueBuffer);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
add_multipart_data (proto_tree *tree, tvbuff_t *tvb)
|
||||
{
|
||||
int offset = 0;
|
||||
|
@ -4762,7 +4761,7 @@ proto_register_wsp(void)
|
|||
}
|
||||
},
|
||||
{ &hf_wsp_post_data,
|
||||
{ "Post Data",
|
||||
{ "Data (Post)",
|
||||
"wsp.post.data",
|
||||
FT_NONE, BASE_NONE, NULL, 0x00,
|
||||
"Post Data", HFILL
|
||||
|
@ -4885,12 +4884,12 @@ proto_register_wsp(void)
|
|||
&ett_header_cache_control_parameters,
|
||||
&ett_header_cache_control_field_names,
|
||||
&ett_capabilities,
|
||||
&ett_post,
|
||||
&ett_content_type,
|
||||
&ett_redirect_flags,
|
||||
&ett_redirect_afl,
|
||||
&ett_multiparts,
|
||||
&ett_mpartlist,
|
||||
&ett_post_data
|
||||
};
|
||||
|
||||
/* Register the protocol name and description */
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
*
|
||||
* Declarations for disassembly of WSP component of WAP traffic.
|
||||
*
|
||||
* $Id: packet-wsp.h,v 1.4 2001/12/07 11:10:53 guy Exp $
|
||||
* $Id: packet-wsp.h,v 1.5 2002/08/07 08:34:55 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -61,7 +61,10 @@ static const value_string vals_wsp_reason_codes[] = {
|
|||
{ 0xEE, "Content type cannot be processed" },
|
||||
};
|
||||
|
||||
void add_multipart_data (proto_tree *, tvbuff_t *);
|
||||
/*
|
||||
* exported functionality
|
||||
*/
|
||||
void add_post_data (proto_tree *, tvbuff_t *, guint, const char *);
|
||||
guint add_content_type (proto_tree *, tvbuff_t *, guint, guint *, const char **);
|
||||
|
||||
#endif /* packet-wsp.h */
|
||||
|
|
Loading…
Reference in New Issue