aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorGraeme Lunt <graeme.lunt@smhs.co.uk>2006-03-25 16:32:46 +0000
committerGraeme Lunt <graeme.lunt@smhs.co.uk>2006-03-25 16:32:46 +0000
commit011ced394ca3be235d0c60275053a816c8731ec2 (patch)
tree2baf58b8a7b5da66da6f05ac8aaee4658a65c1f4 /epan/dissectors
parent719b8effbeef158dc5d8f4f1aac67d207dcbf3f1 (diff)
Support for Session Extended User Data and IMPLICIT APPLICATION tagged bitstrings
svn path=/trunk/; revision=17726
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-ber.c9
-rw-r--r--epan/dissectors/packet-ses.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index 6625da1c3b..b41e6e1297 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -2142,7 +2142,14 @@ int dissect_ber_bitstring(gboolean implicit_tag, packet_info *pinfo, proto_tree
end_offset = offset + len;
/* sanity check: we only handle Universal BitSrings */
- if(!implicit_tag) {
+
+ /* for an IMPLICIT APPLICATION tag asn2eth seems to call this
+ function with implicit_tag = FALSE. BER_FLAGS_NOOWNTAG was
+ set so the APPLICATION tag was still present.
+ So here we relax it for APPLICATION tags. CONTEXT tags may
+ still cause a problem. */
+
+ if(!implicit_tag && (class!=BER_CLASS_APP)) {
if( (class!=BER_CLASS_UNI)
||(tag!=BER_UNI_TAG_BITSTRING) ){
tvb_ensure_bytes_exist(tvb, offset-2, 2);
diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c
index b77e3c6bd4..b05b2401fa 100644
--- a/epan/dissectors/packet-ses.c
+++ b/epan/dissectors/packet-ses.c
@@ -918,6 +918,8 @@ dissect_parameters(tvbuff_t *tvb, int offset, guint16 len, proto_tree *tree,
switch(param_type)
{
case Extended_User_Data:
+ call_pres_dissector(tvb, offset, param_len,
+ pinfo, tree, param_tree, session);
break;
case User_Data:
@@ -973,6 +975,7 @@ dissect_spdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
type = tvb_get_guint8(tvb, offset);
session.spdu_type = type;
session.abort_type = SESSION_NO_ABORT;
+ session.ros_op = 0;
if (tokens) {
if (check_col(pinfo->cinfo, COL_INFO))