aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons
diff options
context:
space:
mode:
authorvlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-09-10 15:49:15 +0000
committervlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-09-10 15:49:15 +0000
commit1308d2b421d14aaabf2c98615a2d2662d674ca24 (patch)
treeb0d6bd9c91b2251cc22e6071d5de1c9f59dc0bd4 /skeletons
parentf97a6192b89a5a22e5a8e6c95e247efb286693e2 (diff)
refactored tagging support
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@307 59561ff5-6e30-0410-9f3c-9617f08c8826
Diffstat (limited to 'skeletons')
-rw-r--r--skeletons/ANY.c1
-rw-r--r--skeletons/BIT_STRING.c1
-rw-r--r--skeletons/BMPString.c1
-rw-r--r--skeletons/BOOLEAN.c1
-rw-r--r--skeletons/ENUMERATED.c1
-rw-r--r--skeletons/GeneralString.c1
-rw-r--r--skeletons/GeneralizedTime.c1
-rw-r--r--skeletons/GraphicString.c1
-rw-r--r--skeletons/IA5String.c1
-rw-r--r--skeletons/INTEGER.c1
-rw-r--r--skeletons/ISO646String.c1
-rw-r--r--skeletons/NULL.c1
-rw-r--r--skeletons/NativeEnumerated.c1
-rw-r--r--skeletons/NativeInteger.c1
-rw-r--r--skeletons/NumericString.c1
-rw-r--r--skeletons/OBJECT_IDENTIFIER.c1
-rw-r--r--skeletons/OCTET_STRING.c1
-rw-r--r--skeletons/ObjectDescriptor.c1
-rw-r--r--skeletons/PrintableString.c1
-rw-r--r--skeletons/RELATIVE-OID.c1
-rw-r--r--skeletons/T61String.c1
-rw-r--r--skeletons/TeletexString.c1
-rw-r--r--skeletons/UTCTime.c1
-rw-r--r--skeletons/UTF8String.c1
-rw-r--r--skeletons/UniversalString.c1
-rw-r--r--skeletons/VideotexString.c1
-rw-r--r--skeletons/VisibleString.c1
-rw-r--r--skeletons/ber_decoder.c20
-rw-r--r--skeletons/constr_SEQUENCE.c6
-rw-r--r--skeletons/constr_SET.c1
-rw-r--r--skeletons/constr_TYPE.h1
-rw-r--r--skeletons/constraints.c5
-rw-r--r--skeletons/der_encoder.c10
33 files changed, 14 insertions, 56 deletions
diff --git a/skeletons/ANY.c b/skeletons/ANY.c
index 20571209..92b209d9 100644
--- a/skeletons/ANY.c
+++ b/skeletons/ANY.c
@@ -15,7 +15,6 @@ asn1_TYPE_descriptor_t asn1_DEF_ANY = {
OCTET_STRING_free,
0, /* Use generic outmost tag fetcher */
0,
- 0,
0, /* No tags may be overridden */
-1, /* Both ways are fine (primitive and constructed) */
0, 0, /* No members */
diff --git a/skeletons/BIT_STRING.c b/skeletons/BIT_STRING.c
index bca34732..7f1aa09a 100644
--- a/skeletons/BIT_STRING.c
+++ b/skeletons/BIT_STRING.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_BIT_STRING = {
asn1_DEF_BIT_STRING_tags,
sizeof(asn1_DEF_BIT_STRING_tags)
/ sizeof(asn1_DEF_BIT_STRING_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
(void *)-1 /* Special indicator that this is a BIT STRING */
diff --git a/skeletons/BMPString.c b/skeletons/BMPString.c
index 6b3ceeb3..87aaceae 100644
--- a/skeletons/BMPString.c
+++ b/skeletons/BMPString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_BMPString = {
asn1_DEF_BMPString_tags,
sizeof(asn1_DEF_BMPString_tags)
/ sizeof(asn1_DEF_BMPString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/BOOLEAN.c b/skeletons/BOOLEAN.c
index b0ae1786..b7b4795a 100644
--- a/skeletons/BOOLEAN.c
+++ b/skeletons/BOOLEAN.c
@@ -20,7 +20,6 @@ asn1_TYPE_descriptor_t asn1_DEF_BOOLEAN = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_BOOLEAN_tags,
sizeof(asn1_DEF_BOOLEAN_tags)/sizeof(asn1_DEF_BOOLEAN_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/ENUMERATED.c b/skeletons/ENUMERATED.c
index 12350ef6..9c8db298 100644
--- a/skeletons/ENUMERATED.c
+++ b/skeletons/ENUMERATED.c
@@ -20,7 +20,6 @@ asn1_TYPE_descriptor_t asn1_DEF_ENUMERATED = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_ENUMERATED_tags,
sizeof(asn1_DEF_ENUMERATED_tags)/sizeof(asn1_DEF_ENUMERATED_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Primitive */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/GeneralString.c b/skeletons/GeneralString.c
index db3b87d8..feef7ccb 100644
--- a/skeletons/GeneralString.c
+++ b/skeletons/GeneralString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_GeneralString = {
asn1_DEF_GeneralString_tags,
sizeof(asn1_DEF_GeneralString_tags)
/ sizeof(asn1_DEF_GeneralString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index e8465028..c66c3145 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -85,7 +85,6 @@ asn1_TYPE_descriptor_t asn1_DEF_GeneralizedTime = {
asn1_DEF_GeneralizedTime_tags,
sizeof(asn1_DEF_GeneralizedTime_tags)
/ sizeof(asn1_DEF_GeneralizedTime_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/GraphicString.c b/skeletons/GraphicString.c
index bd931467..f6d0ae9f 100644
--- a/skeletons/GraphicString.c
+++ b/skeletons/GraphicString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_GraphicString = {
asn1_DEF_GraphicString_tags,
sizeof(asn1_DEF_GraphicString_tags)
/ sizeof(asn1_DEF_GraphicString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/IA5String.c b/skeletons/IA5String.c
index e3ae82fe..33f38a64 100644
--- a/skeletons/IA5String.c
+++ b/skeletons/IA5String.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_IA5String = {
asn1_DEF_IA5String_tags,
sizeof(asn1_DEF_IA5String_tags)
/ sizeof(asn1_DEF_IA5String_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index 16a6b74d..14e91c6d 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -22,7 +22,6 @@ asn1_TYPE_descriptor_t asn1_DEF_INTEGER = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_INTEGER_tags,
sizeof(asn1_DEF_INTEGER_tags)/sizeof(asn1_DEF_INTEGER_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/ISO646String.c b/skeletons/ISO646String.c
index a86d0cec..7ce54968 100644
--- a/skeletons/ISO646String.c
+++ b/skeletons/ISO646String.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_ISO646String = {
asn1_DEF_ISO646String_tags,
sizeof(asn1_DEF_ISO646String_tags)
/ sizeof(asn1_DEF_ISO646String_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/NULL.c b/skeletons/NULL.c
index d71d90de..42afa7e3 100644
--- a/skeletons/NULL.c
+++ b/skeletons/NULL.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_NULL = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_NULL_tags,
sizeof(asn1_DEF_NULL_tags)/sizeof(asn1_DEF_NULL_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/NativeEnumerated.c b/skeletons/NativeEnumerated.c
index 139a602b..9c4fd8f5 100644
--- a/skeletons/NativeEnumerated.c
+++ b/skeletons/NativeEnumerated.c
@@ -27,7 +27,6 @@ asn1_TYPE_descriptor_t asn1_DEF_NativeEnumerated = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_NativeEnumerated_tags,
sizeof(asn1_DEF_NativeEnumerated_tags)/sizeof(asn1_DEF_NativeEnumerated_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index b0cc3b71..60321cc3 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -29,7 +29,6 @@ asn1_TYPE_descriptor_t asn1_DEF_NativeInteger = {
0, /* Use generic outmost tag fetcher */
asn1_DEF_NativeInteger_tags,
sizeof(asn1_DEF_NativeInteger_tags)/sizeof(asn1_DEF_NativeInteger_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/NumericString.c b/skeletons/NumericString.c
index aba1c72b..a70bb5d7 100644
--- a/skeletons/NumericString.c
+++ b/skeletons/NumericString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_NumericString = {
asn1_DEF_NumericString_tags,
sizeof(asn1_DEF_NumericString_tags)
/ sizeof(asn1_DEF_NumericString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index fe209056..a44349e2 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -24,7 +24,6 @@ asn1_TYPE_descriptor_t asn1_DEF_OBJECT_IDENTIFIER = {
asn1_DEF_OBJECT_IDENTIFIER_tags,
sizeof(asn1_DEF_OBJECT_IDENTIFIER_tags)
/ sizeof(asn1_DEF_OBJECT_IDENTIFIER_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index 71d59d3d..65893347 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -23,7 +23,6 @@ asn1_TYPE_descriptor_t asn1_DEF_OCTET_STRING = {
asn1_DEF_OCTET_STRING_tags,
sizeof(asn1_DEF_OCTET_STRING_tags)
/ sizeof(asn1_DEF_OCTET_STRING_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine (primitive and constructed) */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/ObjectDescriptor.c b/skeletons/ObjectDescriptor.c
index 3a03b978..1f82e2b1 100644
--- a/skeletons/ObjectDescriptor.c
+++ b/skeletons/ObjectDescriptor.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_ObjectDescriptor = {
asn1_DEF_ObjectDescriptor_tags,
sizeof(asn1_DEF_ObjectDescriptor_tags)
/ sizeof(asn1_DEF_ObjectDescriptor_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/PrintableString.c b/skeletons/PrintableString.c
index 22d2fbce..89cbf8df 100644
--- a/skeletons/PrintableString.c
+++ b/skeletons/PrintableString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_PrintableString = {
asn1_DEF_PrintableString_tags,
sizeof(asn1_DEF_PrintableString_tags)
/ sizeof(asn1_DEF_PrintableString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/RELATIVE-OID.c b/skeletons/RELATIVE-OID.c
index 252cc373..f1948f86 100644
--- a/skeletons/RELATIVE-OID.c
+++ b/skeletons/RELATIVE-OID.c
@@ -24,7 +24,6 @@ asn1_TYPE_descriptor_t asn1_DEF_RELATIVE_OID = {
asn1_DEF_RELATIVE_OID_tags,
sizeof(asn1_DEF_RELATIVE_OID_tags)
/ sizeof(asn1_DEF_RELATIVE_OID_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
0, /* Always in primitive form */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/T61String.c b/skeletons/T61String.c
index 2815298c..52263744 100644
--- a/skeletons/T61String.c
+++ b/skeletons/T61String.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_T61String = {
asn1_DEF_T61String_tags,
sizeof(asn1_DEF_T61String_tags)
/ sizeof(asn1_DEF_T61String_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/TeletexString.c b/skeletons/TeletexString.c
index 3c20e2f7..b46caed4 100644
--- a/skeletons/TeletexString.c
+++ b/skeletons/TeletexString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_TeletexString = {
asn1_DEF_TeletexString_tags,
sizeof(asn1_DEF_TeletexString_tags)
/ sizeof(asn1_DEF_TeletexString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/UTCTime.c b/skeletons/UTCTime.c
index b2ca1a66..c574e4ea 100644
--- a/skeletons/UTCTime.c
+++ b/skeletons/UTCTime.c
@@ -27,7 +27,6 @@ asn1_TYPE_descriptor_t asn1_DEF_UTCTime = {
asn1_DEF_UTCTime_tags,
sizeof(asn1_DEF_UTCTime_tags)
/ sizeof(asn1_DEF_UTCTime_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/UTF8String.c b/skeletons/UTF8String.c
index c96c71a4..384600aa 100644
--- a/skeletons/UTF8String.c
+++ b/skeletons/UTF8String.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_UTF8String = {
asn1_DEF_UTF8String_tags,
sizeof(asn1_DEF_UTF8String_tags)
/ sizeof(asn1_DEF_UTF8String_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/UniversalString.c b/skeletons/UniversalString.c
index 628ed0ca..35e7bead 100644
--- a/skeletons/UniversalString.c
+++ b/skeletons/UniversalString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_UniversalString = {
asn1_DEF_UniversalString_tags,
sizeof(asn1_DEF_UniversalString_tags)
/ sizeof(asn1_DEF_UniversalString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/VideotexString.c b/skeletons/VideotexString.c
index df21b149..772c66c6 100644
--- a/skeletons/VideotexString.c
+++ b/skeletons/VideotexString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_VideotexString = {
asn1_DEF_VideotexString_tags,
sizeof(asn1_DEF_VideotexString_tags)
/ sizeof(asn1_DEF_VideotexString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/VisibleString.c b/skeletons/VisibleString.c
index d1a11dbe..18a27faf 100644
--- a/skeletons/VisibleString.c
+++ b/skeletons/VisibleString.c
@@ -21,7 +21,6 @@ asn1_TYPE_descriptor_t asn1_DEF_VisibleString = {
asn1_DEF_VisibleString_tags,
sizeof(asn1_DEF_VisibleString_tags)
/ sizeof(asn1_DEF_VisibleString_tags[0]),
- 1, /* Single UNIVERSAL tag may be implicitly overriden */
-1, /* Both ways are fine */
0, 0, /* No members */
0 /* No specifics */
diff --git a/skeletons/ber_decoder.c b/skeletons/ber_decoder.c
index b2c08f50..24a47ac9 100644
--- a/skeletons/ber_decoder.c
+++ b/skeletons/ber_decoder.c
@@ -53,7 +53,7 @@ ber_check_tags(asn1_TYPE_descriptor_t *td, ber_dec_ctx_t *ctx,
int tagno;
/*
- * So what does all this tags_impl_skip stuff mean?
+ * So what does all this implicit skip stuff mean?
* Imagine two types,
* A ::= [5] IMPLICIT T
* B ::= [2] EXPLICIT T
@@ -74,30 +74,14 @@ ber_check_tags(asn1_TYPE_descriptor_t *td, ber_dec_ctx_t *ctx,
* it appropriately.
*/
- /*
- * We have a list of tags that must occur in the stream:
- * {A,B,C}
- * However, it may be indicated that the type is
- * implicitly tagged in the caller, so it really boils down to the
- * {I,B,C} or even {I,C}
- * This is because the implicit tag at above structure may replace
- * zero or more (or every) tags which follow it. We don't care
- * about the precise number, as it is already computed for us
- * by the ASN.1 compiler and placed into td->tags_impl_skip.
- * So let's suppose the only tag left after implicit tagging is {I}.
- * Yet, the table we have is {A,B,C} and td->tags_impl_skip=3.
- * We need to check at least one tag in the loop, so the loop range
- * is modified so it will be invoked at least one time.
- */
tagno = ctx->step /* Continuing where left previously */
- + (tag_mode==-1?(td->tags_impl_skip-1):0)
+ (tag_mode==1?-1:0)
;
ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)",
td->name, (long)size, tag_mode, ctx->step, tagno);
//assert(td->tags_count >= 1); ?May not be the case for CHOICE or ANY.
- if(tagno == td->tags_count) {
+ if(tag_mode == 0 && tagno == td->tags_count) {
/*
* This must be the _untagged_ ANY type,
* which outermost tag isn't known in advance.
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index 649f53b7..36412a65 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -226,8 +226,10 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *td,
* Fetch the T from TLV.
*/
tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag);
- ASN_DEBUG("In %s SEQUENCE for %d %s next tag length %d",
- td->name, edx, elements[edx].name, (int)tag_len);
+ ASN_DEBUG("Current tag in %s SEQUENCE for element %d "
+ "(%s) is %s encoded in %d bytes, left %ld",
+ td->name, edx, elements[edx].name,
+ ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT);
switch(tag_len) {
case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
/* Fall through */
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index f103fa39..7a313340 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -654,7 +654,6 @@ SET_free(asn1_TYPE_descriptor_t *td, void *ptr, int contents_only) {
int
SET_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
asn_app_consume_bytes_f *app_errlog, void *app_key) {
- asn1_SET_specifics_t *specs = (asn1_SET_specifics_t *)td->specifics;
int edx;
if(!sptr) {
diff --git a/skeletons/constr_TYPE.h b/skeletons/constr_TYPE.h
index e072ec53..1918b5c1 100644
--- a/skeletons/constr_TYPE.h
+++ b/skeletons/constr_TYPE.h
@@ -74,7 +74,6 @@ typedef struct asn1_TYPE_descriptor_s {
*/
ber_tlv_tag_t *tags; /* At least one tag must be specified */
int tags_count; /* Number of tags which are expected */
- int tags_impl_skip; /* Tags to skip in implicit mode */
int last_tag_form; /* Acceptable form of the tag (prim, constr) */
/*
diff --git a/skeletons/constraints.c b/skeletons/constraints.c
index a7dce959..862d8f1e 100644
--- a/skeletons/constraints.c
+++ b/skeletons/constraints.c
@@ -112,12 +112,13 @@ _asn_i_log_error(asn_app_consume_bytes_f *cb, void *key, const char *fmt, ...) {
va_start(ap, fmt);
- ret = vsnprintf(buf, len, fmt, ap);
+ ret = vsnprintf(p, len, fmt, ap);
va_end(ap);
if(ret < 0 || ret >= (ssize_t)len) {
ret = sizeof("<broken vsnprintf>") - 1;
memcpy(buf, "<broken vsnprintf>", ret + 1);
+ p = buf;
}
- cb(buf, ret, key);
+ cb(p, ret, key);
}
diff --git a/skeletons/der_encoder.c b/skeletons/der_encoder.c
index fbdccec4..be714925 100644
--- a/skeletons/der_encoder.c
+++ b/skeletons/der_encoder.c
@@ -44,12 +44,12 @@ der_write_tags(asn1_TYPE_descriptor_t *sd,
ssize_t *lens;
int i;
- ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, iskip=%d, tag=%s, mtc=%d)",
- sd->name, tag_mode, sd->tags_count, sd->tags_impl_skip,
+ ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)",
+ sd->name, tag_mode, sd->tags_count,
ber_tlv_tag_string(tag),
tag_mode
?(sd->tags_count+1
- -((tag_mode==-1)?sd->tags_impl_skip:0))
+ -((tag_mode == -1) && sd->tags_count))
:sd->tags_count
);
@@ -67,10 +67,10 @@ der_write_tags(asn1_TYPE_descriptor_t *sd,
}
tags_count = sd->tags_count
+ 1 /* EXPLICIT or IMPLICIT tag is given */
- - ((tag_mode==-1)?sd->tags_impl_skip:0);
+ - ((tag_mode == -1) && sd->tags_count);
/* Copy tags over */
tags[0] = tag;
- stag_offset = -1 + ((tag_mode==-1)?sd->tags_impl_skip:0);
+ stag_offset = -1 + ((tag_mode == -1) && sd->tags_count);
for(i = 1; i < tags_count; i++)
tags[i] = sd->tags[i + stag_offset];
} else {