choice tagging fix
diff --git a/libasn1fix/asn1fix_tags.c b/libasn1fix/asn1fix_tags.c
index ed08513..ff662cc 100644
--- a/libasn1fix/asn1fix_tags.c
+++ b/libasn1fix/asn1fix_tags.c
@@ -44,6 +44,8 @@
if(expr->expr_type == ASN_TYPE_ANY
&& (flags & AFT_IMAGINARY_ANY))
tt.tag_value = -1;
+ else if(expr->expr_type == ASN_CONSTR_CHOICE)
+ return count ? count : -1;
else
return -1;
}
diff --git a/tests/62-any-OK.asn1 b/tests/62-any-OK.asn1
index f3d784c..0e69e01 100644
--- a/tests/62-any-OK.asn1
+++ b/tests/62-any-OK.asn1
@@ -14,7 +14,8 @@
T ::= CHOICE {
s1 T1-ext,
s2 T2,
- s3 T3
+ s3 T3,
+ s4 T4
}
T1-ext ::= SEQUENCE {
@@ -37,4 +38,8 @@
m2 [1] BOOLEAN
}
+ T4 ::= [53] CHOICE {
+ m1 [1] IMPLICIT OCTET STRING
+ }
+
END
diff --git a/tests/62-any-OK.asn1.-EF b/tests/62-any-OK.asn1.-EF
index 4c8f5c4..a7917fc 100644
--- a/tests/62-any-OK.asn1.-EF
+++ b/tests/62-any-OK.asn1.-EF
@@ -7,7 +7,8 @@
T ::= CHOICE {
s1 T1-ext,
s2 T2,
- s3 T3
+ s3 T3,
+ s4 T4
}
T1-ext ::= SEQUENCE {
@@ -30,4 +31,8 @@
m2 [1] IMPLICIT BOOLEAN
}
+T4 ::= [53] EXPLICIT CHOICE {
+ m1 [1] IMPLICIT OCTET STRING
+}
+
END