aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mysql.c
diff options
context:
space:
mode:
authorDaniƫl van Eeden <git@myname.nl>2016-03-20 16:26:49 +0100
committerMichael Mann <mmann78@netscape.net>2016-03-20 18:20:23 +0000
commit93a3041bf541d07f20d68ac488a5d3c887edd35e (patch)
tree4c0e54274be87bb33bc8c34e2b5c5934e4820178 /epan/dissectors/packet-mysql.c
parent1e60d63c8c6882c8c0bdb00cf6df594e1bb6fccf (diff)
Fix response ok packet with no session tracking info but flag set
Change-Id: I901ebc2128c92ef758b6b400cc8d86488a2115cb Reviewed-on: https://code.wireshark.org/review/14537 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-mysql.c')
-rw-r--r--epan/dissectors/packet-mysql.c46
1 files changed, 24 insertions, 22 deletions
diff --git a/epan/dissectors/packet-mysql.c b/epan/dissectors/packet-mysql.c
index 4c784a69fe..3685a0fb45 100644
--- a/epan/dissectors/packet-mysql.c
+++ b/epan/dissectors/packet-mysql.c
@@ -1800,30 +1800,32 @@ mysql_dissect_ok_packet(tvbuff_t *tvb, packet_info *pinfo, int offset,
}
if (conn_data->clnt_caps_ext & MYSQL_CAPS_ST) {
- guint64 session_track_length;
- proto_item *tf;
- proto_item *session_track_tree = NULL;
- int length;
-
- offset += tvb_get_fle(tvb, offset, &lenstr, NULL);
- /* first read the optional message */
- if (lenstr) {
- proto_tree_add_item(tree, hf_mysql_message, tvb, offset, (gint)lenstr, ENC_ASCII|ENC_NA);
- offset += (int)lenstr;
- }
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ guint64 session_track_length;
+ proto_item *tf;
+ proto_item *session_track_tree = NULL;
+ int length;
- /* session state tracking */
- if (server_status & MYSQL_STAT_SESSION_STATE_CHANGED) {
- fle = tvb_get_fle(tvb, offset, &session_track_length, NULL);
- tf = proto_tree_add_item(tree, hf_mysql_session_track_data, tvb, offset, -1, ENC_NA);
- session_track_tree = proto_item_add_subtree(tf, ett_session_track_data);
- proto_tree_add_uint64(tf, hf_mysql_session_track_data_length, tvb, offset, fle, session_track_length);
- offset += fle;
+ offset += tvb_get_fle(tvb, offset, &lenstr, NULL);
+ /* first read the optional message */
+ if (lenstr) {
+ proto_tree_add_item(tree, hf_mysql_message, tvb, offset, (gint)lenstr, ENC_ASCII|ENC_NA);
+ offset += (int)lenstr;
+ }
- while (session_track_length > 0) {
- length = add_session_tracker_entry_to_tree(tvb, pinfo, session_track_tree, offset);
- offset += length;
- session_track_length -= length;
+ /* session state tracking */
+ if (server_status & MYSQL_STAT_SESSION_STATE_CHANGED) {
+ fle = tvb_get_fle(tvb, offset, &session_track_length, NULL);
+ tf = proto_tree_add_item(tree, hf_mysql_session_track_data, tvb, offset, -1, ENC_NA);
+ session_track_tree = proto_item_add_subtree(tf, ett_session_track_data);
+ proto_tree_add_uint64(tf, hf_mysql_session_track_data_length, tvb, offset, fle, session_track_length);
+ offset += fle;
+
+ while (session_track_length > 0) {
+ length = add_session_tracker_entry_to_tree(tvb, pinfo, session_track_tree, offset);
+ offset += length;
+ session_track_length -= length;
+ }
}
}
} else {