diff options
author | Jeff Morriss <jeff.morriss@ulticom.com> | 2012-02-08 03:18:04 +0000 |
---|---|---|
committer | Jeff Morriss <jeff.morriss@ulticom.com> | 2012-02-08 03:18:04 +0000 |
commit | 2d3220dcb55f66c66f987cfc3da2d3a125f37f94 (patch) | |
tree | 2290a0919dd172e9d4a3b24b81bbc3d0a4b163fc | |
parent | d51510c1a3e64cc979e6f24410d24e9b2c48b35a (diff) |
Heuristic standard detection:
- Grab optional parameters for LUDT/LUDTS
- Fix processing of the 2-octet pointers
svn path=/trunk/; revision=40923
-rw-r--r-- | epan/dissectors/packet-sccp.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c index a07fc9395b..ba37d39acd 100644 --- a/epan/dissectors/packet-sccp.c +++ b/epan/dissectors/packet-sccp.c @@ -1000,6 +1000,18 @@ looks_like_valid_sccp(guint32 frame_num _U_, tvbuff_t *tvb, guint8 my_mtp3_stand if (msgtype == SCCP_MSG_TYPE_XUDT || msgtype == SCCP_MSG_TYPE_XUDTS) { opt_ptr = tvb_get_guint8(tvb, offset); offset += POINTER_LENGTH; + } else if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) { + opt_ptr = tvb_get_letohs(tvb, offset); + offset += POINTER_LENGTH_LONG; + } + + if (msgtype == SCCP_MSG_TYPE_LUDT || msgtype == SCCP_MSG_TYPE_LUDTS) { + /* Long pointers count from the 2nd (MSB) octet of the pointer */ + called_ptr += 1; + calling_ptr += 1; + data_ptr += 1; + if (opt_ptr) + opt_ptr += 1; } /* Check that the variable pointers are within bounds */ |