aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-json.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-02 02:12:36 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-02 02:12:36 +0000
commit8dc0db8d7249ad228c45266606ace53333746c2f (patch)
tree78c9a321e5fd5392fc1695f848b9796d7d95b249 /epan/dissectors/packet-json.c
parentac09e775c9f1fee7075fc6af25b995fa0818db14 (diff)
downloadwireshark-8dc0db8d7249ad228c45266606ace53333746c2f.tar.gz
wireshark-8dc0db8d7249ad228c45266606ace53333746c2f.tar.bz2
wireshark-8dc0db8d7249ad228c45266606ace53333746c2f.zip
Allow json dissector to receive a string through dissector data and give dissector data priority over pinfo->private_data (to discourage it's use)
svn path=/trunk/; revision=53042
Diffstat (limited to 'epan/dissectors/packet-json.c')
-rw-r--r--epan/dissectors/packet-json.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/epan/dissectors/packet-json.c b/epan/dissectors/packet-json.c
index 00882d529a..4355e002d6 100644
--- a/epan/dissectors/packet-json.c
+++ b/epan/dissectors/packet-json.c
@@ -101,8 +101,8 @@ typedef struct {
} json_parser_data_t;
-static void
-dissect_json(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+static int
+dissect_json(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
proto_tree *json_tree = NULL;
proto_item *ti = NULL;
@@ -114,16 +114,22 @@ dissect_json(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int offset;
data_name = pinfo->match_string;
- if (!(data_name && data_name[0])) {
+ if (! (data_name && data_name[0])) {
/*
* No information from "match_string"
*/
- data_name = (char *)(pinfo->private_data);
- if (!(data_name && data_name[0])) {
+ data_name = (char *)data;
+ if (! (data_name && data_name[0])) {
/*
- * No information from "private_data"
+ * No information from dissector data
*/
- data_name = NULL;
+ data_name = (char *)(pinfo->private_data);
+ if (! (data_name && data_name[0])) {
+ /*
+ * No information from "private_data"
+ */
+ data_name = NULL;
+ }
}
}
@@ -164,6 +170,8 @@ dissect_json(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else if (data_name) {
col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "(%s)", data_name);
}
+
+ return tvb_length(tvb);
}
static void before_object(void *tvbparse_data, const void *wanted_data _U_, tvbparse_elem_t *tok) {
@@ -578,7 +586,7 @@ proto_register_json(void) {
proto_register_fields(proto_json, hfi, array_length(hfi));
proto_register_subtree_array(ett, array_length(ett));
- register_dissector("json", dissect_json, proto_json);
+ new_register_dissector("json", dissect_json, proto_json);
init_json_parser();
}