constrain integer random generation by PER constraints
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index df385bd..05ecae0 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -451,7 +451,7 @@
assert(emap_len > 0);
value = emap[asn_random_between(0, emap_len - 1)].nat_value;
} else {
- const asn_per_constraint_t *ct;
+ const asn_per_constraints_t *ct;
static const long variants[] = {
-65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384,
@@ -469,8 +469,13 @@
}
if(!constraints) constraints = &td->encoding_constraints;
- ct = constraints ? &constraints->per_constraints->value : 0;
- (void)ct;
+ ct = constraints ? constraints->per_constraints : 0;
+ if(ct && (ct->value.flags & APC_CONSTRAINED)) {
+ if(value < ct->value.lower_bound || value > ct->value.upper_bound) {
+ value = asn_random_between(ct->value.lower_bound,
+ ct->value.upper_bound);
+ }
+ }
}
*sptr = st;