aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ber.h
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2009-12-18 15:18:31 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2009-12-18 15:18:31 +0000
commite73a89d91a207d990c9f38b949ba67cd3b1367eb (patch)
tree01eabb7b3f8c10d779e31c13c516f7cad5c2cbfc /epan/dissectors/packet-ber.h
parent29a4a0789acf6d1df801c8b19b19292b1ba7b3aa (diff)
downloadwireshark-e73a89d91a207d990c9f38b949ba67cd3b1367eb.tar.gz
wireshark-e73a89d91a207d990c9f38b949ba67cd3b1367eb.tar.bz2
wireshark-e73a89d91a207d990c9f38b949ba67cd3b1367eb.zip
Added option (-C) to check for SIZE constraints in octet-string, integer,
enumerated, sequence-of and set-of types. Added BER functions to check for SIZE constraints and give expert info warnings. svn path=/trunk/; revision=31309
Diffstat (limited to 'epan/dissectors/packet-ber.h')
-rw-r--r--epan/dissectors/packet-ber.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/epan/dissectors/packet-ber.h b/epan/dissectors/packet-ber.h
index 8b80e76525..ce6f299a12 100644
--- a/epan/dissectors/packet-ber.h
+++ b/epan/dissectors/packet-ber.h
@@ -38,6 +38,11 @@ if (check_col(pinfo->cinfo, COL_INFO)){ \
} \
tvb_get_guint8(tvb, 9999);
+/* value for value and size constraints */
+#ifndef NO_BOUND
+#define NO_BOUND -1
+#endif
+
typedef int (*ber_callback)(gboolean imp_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
typedef int (*ber_type_fn)(gboolean, tvbuff_t*, int, asn1_ctx_t *actx, proto_tree*, int);
/* To be removed when the transition to the "New" type is complete */
@@ -107,13 +112,16 @@ extern int dissect_ber_length(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
extern int dissect_ber_tagged_type(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, gint8 tag_cls, gint32 tag_tag, gboolean tag_impl, ber_type_fn type);
+extern int dissect_ber_constrained_octet_string(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, tvbuff_t **out_tvb);
extern int dissect_ber_octet_string(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, tvbuff_t **out_tvb);
extern int dissect_ber_octet_string_wcb(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, ber_callback func);
extern int dissect_ber_old_octet_string_wcb(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, ber_old_callback func);
extern int dissect_ber_integer64(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, gint64 *value);
+extern int dissect_ber_constrained_integer64(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint64 min_len, gint64 max_len, gint hf_id, gint64 *value);
extern int dissect_ber_integer(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, guint32 *value);
+extern int dissect_ber_constrained_integer(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, guint32 *value);
extern int dissect_ber_null(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id);
@@ -178,6 +186,7 @@ extern int dissect_ber_old_choice(asn1_ctx_t *actx, proto_tree *parent_tree, tvb
/*
* This function dissects a BER strings
*/
+extern int dissect_ber_constrained_restricted_string(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, gint hf_id, tvbuff_t **out_tvb);
extern int dissect_ber_restricted_string(gboolean implicit_tag, gint32 type, asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, tvbuff_t **out_tvb);
extern int dissect_ber_GeneralString(asn1_ctx_t *actx, proto_tree *tree, tvbuff_t *tvb, int offset, gint hf_id, char *name_string, guint name_len);
@@ -189,8 +198,10 @@ extern int dissect_ber_object_identifier_str(gboolean implicit_tag, asn1_ctx_t *
/* this function dissects a BER sequence of
*/
+extern int dissect_ber_constrained_sequence_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const ber_sequence_t *seq, gint hf_id, gint ett_id);
extern int dissect_ber_sequence_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *seq, gint hf_id, gint ett_id);
+extern int dissect_ber_constrained_set_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, gint32 min_len, gint32 max_len, const ber_sequence_t *seq, gint hf_id, gint ett_id);
extern int dissect_ber_set_of(gboolean implicit_tag, asn1_ctx_t *actx, proto_tree *parent_tree, tvbuff_t *tvb, int offset, const ber_sequence_t *seq, gint hf_id, gint ett_id);
/* To be removed when the transition to the "New" type is complete */