aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-edonkey.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2009-11-25 06:39:29 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2009-11-25 06:39:29 +0000
commitea3407dc598c13c4d9637ba9d1d9ebcee2257985 (patch)
tree30c3e0efc420e7d58ac19c686759a8af16ba3765 /epan/dissectors/packet-edonkey.c
parenteadf5e8448c4e9426758c02a49103d70efdc96b7 (diff)
From Andrew Jean:
When dissecting an eDonkey "Request Parts" message, Wireshark incorrectly reads 3 offset start/end pairs when the actual number can be 1-3 pairs. svn path=/trunk/; revision=31071
Diffstat (limited to 'epan/dissectors/packet-edonkey.c')
-rw-r--r--epan/dissectors/packet-edonkey.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/epan/dissectors/packet-edonkey.c b/epan/dissectors/packet-edonkey.c
index 87aa2ef7b7..8b79983927 100644
--- a/epan/dissectors/packet-edonkey.c
+++ b/epan/dissectors/packet-edonkey.c
@@ -1881,13 +1881,20 @@ static void dissect_edonkey_tcp_message(guint8 msg_type,
break;
case EDONKEY_MSG_REQUEST_PARTS: /* Request Parts: <File hash> <Start offset>(3) <End offset>(3) */
- offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_start_offset(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_start_offset(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_start_offset(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_end_offset(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_end_offset(tvb, pinfo, offset, tree);
- offset = dissect_edonkey_end_offset(tvb, pinfo, offset, tree);
+ {
+ int pairs, count;
+ offset = dissect_edonkey_file_hash(tvb, pinfo, offset, tree);
+ pairs = (msg_end - offset) / 8;
+
+ for (count=0; count < pairs; count++)
+ {
+ offset = dissect_edonkey_start_offset(tvb, pinfo, offset, tree);
+ }
+ for (count=0; count < pairs; count++)
+ {
+ offset = dissect_edonkey_end_offset(tvb, pinfo, offset, tree);
+ }
+ }
break;
case EDONKEY_MSG_SENDING_PART: /* Sending Part: <File hash> <Start offset> <End offset> DATA */