20 long max_elements = 5;
25 if(max_length == 0)
return result_skipped;
28 st = (*sptr =
CALLOC(1, specs->struct_size));
35 case 0: max_elements = 0;
break;
36 case 1: max_elements = 1;
break;
37 case 2: max_elements = 5;
break;
38 case 3: max_elements = max_length;
break;
39 case 4: max_elements = max_length / 2;
break;
40 case 5: max_elements = max_length / 4;
break;
43 sub = slb + max_elements;
45 #if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
46 if(!constraints || !constraints->per_constraints)
47 constraints = &td->encoding_constraints;
48 if(constraints->per_constraints) {
50 if(pc->
flags & APC_SEMI_CONSTRAINED) {
53 }
else if(pc->
flags & APC_CONSTRAINED) {
56 if(sub - slb > max_elements) sub = slb + max_elements;
60 if(!constraints) constraints = &td->encoding_constraints;
67 #if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT)
69 if(constraints->per_constraints
70 && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) {
87 if(sub < (ssize_t)max_length) {
94 if(sub < (ssize_t)max_length) {
101 rnd_len = max_length;
131 for(; rnd_len > 0; rnd_len--) {
136 (max_length > res_ok.length ? max_length - res_ok.length : 0)
138 switch(tmpres.
code) {
141 res_ok.length += tmpres.
length;