Commit e5086e3f authored by Lev Walkin's avatar Lev Walkin

extensibility shall not change the type from wide to narrow

parent 58b74eb5
...@@ -705,7 +705,7 @@ native_long_sign(asn1cnst_range_t *r) { ...@@ -705,7 +705,7 @@ native_long_sign(asn1cnst_range_t *r) {
&& r->left.value >= 0 && r->left.value >= 0
&& r->right.type == ARE_VALUE && r->right.type == ARE_VALUE
&& r->right.value > 2147483647 && r->right.value > 2147483647
&& (unsigned long)r->right.value <= 4294967295UL) { && r->right.value <= 4294967295UL) {
if(r->el_count == 0 if(r->el_count == 0
&& r->left.value == 0 && r->left.value == 0
&& r->right.value == 4294967295UL) && r->right.value == 4294967295UL)
......
...@@ -359,9 +359,13 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) { ...@@ -359,9 +359,13 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
*/ */
range = asn1constraint_compute_PER_range(expr->expr_type, range = asn1constraint_compute_PER_range(expr->expr_type,
expr->combined_constraints, ACT_EL_RANGE, 0, 0, 0); expr->combined_constraints, ACT_EL_RANGE, 0, 0, 0);
if(!range if(!range
|| range->empty_constraint /* Commenting out
|| range->extensible || range->extensible
* because this may or may not indicate wide type.
*/
|| range->empty_constraint
|| range->incompatible || range->incompatible
|| range->not_PER_visible || range->not_PER_visible
) { ) {
...@@ -379,7 +383,7 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) { ...@@ -379,7 +383,7 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
&& left.value >= 0 && left.value >= 0
&& right.type == ARE_VALUE && right.type == ARE_VALUE
&& right.value > 2147483647 && right.value > 2147483647
&& (unsigned long)right.value <= 4294967295UL) && right.value <= 4294967295UL)
return FL_FITS_UNSIGN; return FL_FITS_UNSIGN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment