Bug fix in json dissector that made the heuristic fail.

Change-Id: Iff53cfd8fd9d760b04c638c87f8a44587b268cd7
Reviewed-on: https://code.wireshark.org/review/6674
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Dario Lombardo 2015-01-19 23:12:25 +01:00 committed by Anders Broman
parent 11e557a794
commit 1af7b97927
1 changed files with 5 additions and 3 deletions

View File

@ -572,15 +572,17 @@ static void init_json_parser(void) {
static gboolean
dissect_json_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
/* We expect no more than 1024 tokens */
const guint max_tokens = 1024;
guint len = tvb_captured_length(tvb);
guint8* buf = tvb_get_string_enc(wmem_packet_scope(), tvb, 0, len, ENC_ASCII);
jsmn_parser p;
/* We expect no more than 1024 tokens */
jsmntok_t* t = (jsmntok_t*)wmem_alloc_array(wmem_packet_scope(), jsmntok_t, 1024);
jsmntok_t* t = (jsmntok_t*)wmem_alloc_array(wmem_packet_scope(), jsmntok_t, max_tokens);
jsmn_init(&p);
if (jsmn_parse(&p, buf, len, t, sizeof(t)/sizeof(t[0])) < 0) {
if (jsmn_parse(&p, buf, len, t, max_tokens) < 0) {
return FALSE;
}
return (dissect_json(tvb, pinfo, tree, data) != 0);