diff options
author | Dario Lombardo <lomato@gmail.com> | 2016-10-24 16:04:02 +0200 |
---|---|---|
committer | Dario Lombardo <lomato@gmail.com> | 2016-10-27 15:10:20 +0000 |
commit | f347af277cd1132f7d9676303c06bbc26b3f22e8 (patch) | |
tree | 661524194c5832ec6a5aac0a5f4487784750697d /epan/dissectors/packet-ajp13.c | |
parent | 64279d3455af2a676e0431d4bee6132219b4c513 (diff) |
ajp13: remove unused variable.
Also add expert info for failing conversion.
Change-Id: I75bb385c430527e41775822ab0495684ab660c08
Reviewed-on: https://code.wireshark.org/review/18431
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-ajp13.c')
-rw-r--r-- | epan/dissectors/packet-ajp13.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/epan/dissectors/packet-ajp13.c b/epan/dissectors/packet-ajp13.c index c8c4d64bb5..a8246abdd5 100644 --- a/epan/dissectors/packet-ajp13.c +++ b/epan/dissectors/packet-ajp13.c @@ -27,6 +27,7 @@ #include <epan/packet.h> #include <epan/proto_data.h> +#include <epan/expert.h> #include "packet-tcp.h" #include <wsutil/strtoi.h> @@ -233,6 +234,8 @@ static int hf_ajp13_rsmsg = -1; static int hf_ajp13_data = -1; static gint ett_ajp13 = -1; +static expert_field ei_ajp13_content_length_invalid = EI_INIT; + /* * Request/response header codes. Common headers are stored as ints in * an effort to improve performance. Why can't we just have one big @@ -640,10 +643,9 @@ display_req_forward(tvbuff_t *tvb, packet_info *pinfo, for(i=0; i<nhdr; i++) { guint8 hcd; - guint8 hid; + guint8 hid = 0; const gchar* hname = NULL; int hpos = pos; - int cl = 0; const gchar *hval; guint16 hval_len, hname_len; @@ -652,6 +654,8 @@ display_req_forward(tvbuff_t *tvb, packet_info *pinfo, hcd = tvb_get_guint8(tvb, pos); if (hcd == 0xA0) { + proto_item* pi; + pos+=1; hid = tvb_get_guint8(tvb, pos); pos+=1; @@ -661,13 +665,15 @@ display_req_forward(tvbuff_t *tvb, packet_info *pinfo, hval = ajp13_get_nstring(tvb, pos, &hval_len); - proto_tree_add_string_format(ajp13_tree, *req_headers[hid], + pi = proto_tree_add_string_format(ajp13_tree, *req_headers[hid], tvb, hpos, 2+hval_len+2, hval, "%s", hval); - pos+=hval_len+2; - if (hid == 0x08) - cl = 1; + if (hid == 0x08 && !ws_strtou32(hval, NULL, &cd->content_length)) { + expert_add_info(pinfo, pi, &ei_ajp13_content_length_invalid); + } + + pos+=hval_len+2; } else { hname = ajp13_get_nstring(tvb, pos, &hname_len); pos+=hname_len+2; @@ -680,10 +686,6 @@ display_req_forward(tvbuff_t *tvb, packet_info *pinfo, "%s: %s", hname, hval); pos+=hval_len+2; } - - if (cl && ws_strtou32(hval, NULL, &cl)) { - cd->content_length = cl; - } } /* ATTRIBUTES @@ -869,6 +871,8 @@ dissect_ajp13(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) void proto_register_ajp13(void) { + expert_module_t* expert_ajp13; + static hf_register_info hf[] = { { &hf_ajp13_magic, { "Magic", "ajp13.magic", FT_BYTES, BASE_NONE, NULL, 0x0, "Magic Number", @@ -1100,6 +1104,11 @@ proto_register_ajp13(void) }, }; + static ei_register_info ei[] = { + { &ei_ajp13_content_length_invalid, { "ajp13.content_length.invalid", PI_MALFORMED, PI_ERROR, + "Content-Length must be a string containing an integer", EXPFILL }} + }; + static gint *ett[] = { &ett_ajp13, }; @@ -1111,6 +1120,8 @@ proto_register_ajp13(void) proto_register_field_array(proto_ajp13, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + expert_ajp13 = expert_register_protocol(proto_ajp13); + expert_register_field_array(expert_ajp13, ei, array_length(ei)); } |