From 4709d67f92bf89c264e38fbf94e3324edd922ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Tue, 23 Apr 2013 10:39:50 +0200 Subject: Fix encoding of semi-constrained, extensible INTEGERs Given: Semi ::= INTEGER (Lb..MAX, ...) where Lb is an arbitrary integer, attempting to encode an integer less than Lb would cause the encoder to enter an infinite loop. --- lib/asn1/test/asn1_SUITE_data/Constraints.py | 2 ++ lib/asn1/test/testConstraints.erl | 10 ++++++++++ 2 files changed, 12 insertions(+) (limited to 'lib/asn1/test') diff --git a/lib/asn1/test/asn1_SUITE_data/Constraints.py b/lib/asn1/test/asn1_SUITE_data/Constraints.py index 1d2f4bc44c..e4bc987e4c 100644 --- a/lib/asn1/test/asn1_SUITE_data/Constraints.py +++ b/lib/asn1/test/asn1_SUITE_data/Constraints.py @@ -14,6 +14,8 @@ LongLong ::= INTEGER (0..18446744073709551615) Range256to65536 ::= INTEGER (256..65536) SemiConstrained ::= INTEGER (100..MAX) NegSemiConstrained ::= INTEGER (-128..MAX) +SemiConstrainedExt ::= INTEGER (42..MAX, ...) +NegSemiConstrainedExt ::= INTEGER (-128..MAX, ...) -- Other constraints FixedSize ::= OCTET STRING (SIZE(10)) diff --git a/lib/asn1/test/testConstraints.erl b/lib/asn1/test/testConstraints.erl index b90ae8cab2..e825302629 100644 --- a/lib/asn1/test/testConstraints.erl +++ b/lib/asn1/test/testConstraints.erl @@ -131,6 +131,16 @@ int_constraints(Rules) -> roundtrip('NegSemiConstrained', -1), roundtrip('NegSemiConstrained', 500), + roundtrip('SemiConstrainedExt', -65536), + roundtrip('SemiConstrainedExt', 0), + roundtrip('SemiConstrainedExt', 42), + roundtrip('SemiConstrainedExt', 100), + roundtrip('SemiConstrainedExt', 47777789), + roundtrip('NegSemiConstrainedExt', -1023), + roundtrip('NegSemiConstrainedExt', -128), + roundtrip('NegSemiConstrainedExt', -1), + roundtrip('NegSemiConstrainedExt', 500), + %%========================================================== %% SIZE Constraint (Duboisson p. 268) %% T ::= IA5String (SIZE (1|2, ..., SIZE (1|2|3))) -- cgit v1.2.3