diff options
author | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2009-06-04 08:30:03 +0000 |
---|---|---|
committer | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2009-06-04 08:30:03 +0000 |
commit | 99a105954f22841ab499251dd18d7a2ad8011613 (patch) | |
tree | 9e98196da6b7861e9a5c1c14df48c9ccf9c77740 /epan | |
parent | b66fa033ce9fd43c8b5aaa107ba392de6f93d0fb (diff) |
A segmented DATA SPDU sequence of length one has user information.
svn path=/trunk/; revision=28634
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-ses.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c index 7d406b495c..34b63c2e9c 100644 --- a/epan/dissectors/packet-ses.c +++ b/epan/dissectors/packet-ses.c @@ -626,14 +626,25 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, } if (flags & END_SPDU) { /* - * In Data Transfer and Typed Data SPDUs, + * In Data Transfer and Typed Data SPDUs, (X.225: 8.3.{11,13}.4) * "The User Information Field shall be present * if the Enclosure Item is not present, or has * bit 2 = 0", which presumably means it shall * *not* be present if the Enclosure item *is* * present and has bit 2 = 1. */ - has_user_information = FALSE; + + if(!(flags & BEGINNING_SPDU)) { + /* X.225 7.11.2 also states: + * "All DATA TRANSFER SPDUs, except the last DATA TRANSFER SPDU in a sequence greater than one, must have user information" + * So if BEGINNING_SPDU and END_SPDU are set in the enclosure item, then this is presumably a sequence of one and + * consequently there must be user information. + * + * So, there is only no user information if *only* END_SPDU is set. + */ + + has_user_information = FALSE; + } } break; |