Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
asn1c
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
asn1c
Commits
a28cbb9f
Commit
a28cbb9f
authored
Jul 31, 2017
by
Lev Walkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add constraint debug
parent
fc4f37a5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
47 additions
and
33 deletions
+47
-33
libasn1compiler/asn1c_C.c
libasn1compiler/asn1c_C.c
+7
-5
libasn1compiler/asn1c_constraint.c
libasn1compiler/asn1c_constraint.c
+3
-3
libasn1compiler/asn1c_misc.c
libasn1compiler/asn1c_misc.c
+3
-2
libasn1fix/asn1fix.c
libasn1fix/asn1fix.c
+2
-1
libasn1fix/asn1fix_crange.c
libasn1fix/asn1fix_crange.c
+14
-10
libasn1fix/asn1fix_crange.h
libasn1fix/asn1fix_crange.h
+6
-3
libasn1print/asn1print.c
libasn1print/asn1print.c
+12
-9
No files found.
libasn1compiler/asn1c_C.c
View file @
a28cbb9f
...
@@ -2151,7 +2151,8 @@ emit_member_OER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
...
@@ -2151,7 +2151,8 @@ emit_member_OER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
INDENT
(
+
1
);
INDENT
(
+
1
);
range
=
asn1constraint_compute_OER_range
(
etype
,
expr
->
combined_constraints
,
range
=
asn1constraint_compute_OER_range
(
expr
->
Identifier
,
etype
,
expr
->
combined_constraints
,
ACT_EL_RANGE
,
0
,
0
,
0
);
ACT_EL_RANGE
,
0
,
0
,
0
);
if
(
emit_single_member_OER_constraint
(
arg
,
range
,
0
))
{
if
(
emit_single_member_OER_constraint
(
arg
,
range
,
0
))
{
return
-
1
;
return
-
1
;
...
@@ -2160,7 +2161,8 @@ emit_member_OER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
...
@@ -2160,7 +2161,8 @@ emit_member_OER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
OUT
(
",
\n
"
);
OUT
(
",
\n
"
);
range
=
asn1constraint_compute_OER_range
(
etype
,
expr
->
combined_constraints
,
range
=
asn1constraint_compute_OER_range
(
expr
->
Identifier
,
etype
,
expr
->
combined_constraints
,
ACT_CT_SIZE
,
0
,
0
,
0
);
ACT_CT_SIZE
,
0
,
0
,
0
);
if
(
emit_single_member_OER_constraint
(
arg
,
range
,
"SIZE"
))
{
if
(
emit_single_member_OER_constraint
(
arg
,
range
,
"SIZE"
))
{
return
-
1
;
return
-
1
;
...
@@ -2233,7 +2235,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
...
@@ -2233,7 +2235,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
if
(
emit_single_member_PER_constraint
(
arg
,
&
tmprng
,
0
,
0
))
if
(
emit_single_member_PER_constraint
(
arg
,
&
tmprng
,
0
,
0
))
return
-
1
;
return
-
1
;
}
else
if
(
etype
&
ASN_STRING_KM_MASK
)
{
}
else
if
(
etype
&
ASN_STRING_KM_MASK
)
{
range
=
asn1constraint_compute_PER_range
(
etype
,
range
=
asn1constraint_compute_PER_range
(
e
xpr
->
Identifier
,
e
type
,
expr
->
combined_constraints
,
ACT_CT_FROM
,
expr
->
combined_constraints
,
ACT_CT_FROM
,
0
,
0
,
0
);
0
,
0
,
0
);
DEBUG
(
"Emitting FROM constraint for %s"
,
expr
->
Identifier
);
DEBUG
(
"Emitting FROM constraint for %s"
,
expr
->
Identifier
);
...
@@ -2263,7 +2265,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
...
@@ -2263,7 +2265,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
avoid:
avoid:
asn1constraint_range_free
(
range
);
asn1constraint_range_free
(
range
);
}
else
{
}
else
{
range
=
asn1constraint_compute_PER_range
(
etype
,
range
=
asn1constraint_compute_PER_range
(
e
xpr
->
Identifier
,
e
type
,
expr
->
combined_constraints
,
ACT_EL_RANGE
,
expr
->
combined_constraints
,
ACT_EL_RANGE
,
0
,
0
,
0
);
0
,
0
,
0
);
if
(
emit_single_member_PER_constraint
(
arg
,
range
,
0
,
0
))
if
(
emit_single_member_PER_constraint
(
arg
,
range
,
0
,
0
))
...
@@ -2272,7 +2274,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
...
@@ -2272,7 +2274,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
}
}
OUT
(
",
\n
"
);
OUT
(
",
\n
"
);
range
=
asn1constraint_compute_PER_range
(
etype
,
range
=
asn1constraint_compute_PER_range
(
e
xpr
->
Identifier
,
e
type
,
expr
->
combined_constraints
,
ACT_CT_SIZE
,
0
,
0
,
0
);
expr
->
combined_constraints
,
ACT_CT_SIZE
,
0
,
0
,
0
);
if
(
emit_single_member_PER_constraint
(
arg
,
range
,
0
,
"SIZE"
))
if
(
emit_single_member_PER_constraint
(
arg
,
range
,
0
,
"SIZE"
))
return
-
1
;
return
-
1
;
...
...
libasn1compiler/asn1c_constraint.c
View file @
a28cbb9f
...
@@ -43,8 +43,8 @@ asn1c_emit_constraint_checking_code(arg_t *arg) {
...
@@ -43,8 +43,8 @@ asn1c_emit_constraint_checking_code(arg_t *arg) {
etype
=
_find_terminal_type
(
arg
);
etype
=
_find_terminal_type
(
arg
);
r_value
=
asn1constraint_compute_
PER_range
(
etype
,
ct
,
ACT_EL_RANGE
,
0
,
0
,
0
);
r_value
=
asn1constraint_compute_
constraint_range
(
expr
->
Identifier
,
etype
,
ct
,
ACT_EL_RANGE
,
0
,
0
,
0
);
r_size
=
asn1constraint_compute_
PER_range
(
etype
,
ct
,
ACT_CT_SIZE
,
0
,
0
,
0
);
r_size
=
asn1constraint_compute_
constraint_range
(
expr
->
Identifier
,
etype
,
ct
,
ACT_CT_SIZE
,
0
,
0
,
0
);
if
(
r_value
)
{
if
(
r_value
)
{
if
(
r_value
->
incompatible
if
(
r_value
->
incompatible
||
r_value
->
empty_constraint
||
r_value
->
empty_constraint
...
@@ -251,7 +251,7 @@ asn1c_emit_constraint_tables(arg_t *arg, int got_size) {
...
@@ -251,7 +251,7 @@ asn1c_emit_constraint_tables(arg_t *arg, int got_size) {
etype
=
_find_terminal_type
(
arg
);
etype
=
_find_terminal_type
(
arg
);
range
=
asn1constraint_compute_
PER_range
(
etype
,
ct
,
ACT_CT_FROM
,
0
,
0
,
0
);
range
=
asn1constraint_compute_
constraint_range
(
arg
->
expr
->
Identifier
,
etype
,
ct
,
ACT_CT_FROM
,
0
,
0
,
0
);
if
(
!
range
)
return
0
;
if
(
!
range
)
return
0
;
if
(
range
->
incompatible
if
(
range
->
incompatible
...
...
libasn1compiler/asn1c_misc.c
View file @
a28cbb9f
...
@@ -359,7 +359,8 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
...
@@ -359,7 +359,8 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
* applied (non-standard! but we can deal with this) to the type.
* applied (non-standard! but we can deal with this) to the type.
* Check the range.
* Check the range.
*/
*/
range
=
asn1constraint_compute_PER_range
(
expr
->
expr_type
,
range
=
asn1constraint_compute_constraint_range
(
expr
->
Identifier
,
expr
->
expr_type
,
expr
->
combined_constraints
,
ACT_CT_SIZE
,
0
,
0
,
expr
->
combined_constraints
,
ACT_CT_SIZE
,
0
,
0
,
CPR_simulate_fbless_SIZE
);
CPR_simulate_fbless_SIZE
);
if
(
range
)
{
if
(
range
)
{
...
@@ -375,7 +376,7 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
...
@@ -375,7 +376,7 @@ asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr) {
/*
/*
* Third, pull up the PER visible range of the INTEGER.
* Third, pull up the PER visible range of the INTEGER.
*/
*/
range
=
asn1constraint_compute_PER_range
(
expr
->
expr_type
,
range
=
asn1constraint_compute_PER_range
(
expr
->
Identifier
,
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
...
...
libasn1fix/asn1fix.c
View file @
a28cbb9f
...
@@ -448,7 +448,8 @@ asn1f_check_constraints(arg_t *arg) {
...
@@ -448,7 +448,8 @@ asn1f_check_constraints(arg_t *arg) {
RET2RVAL
(
ret
,
rvalue
);
RET2RVAL
(
ret
,
rvalue
);
for
(
i
=
0
;
i
<
sizeof
(
test_types
)
/
sizeof
(
test_types
[
0
]);
i
++
)
{
for
(
i
=
0
;
i
<
sizeof
(
test_types
)
/
sizeof
(
test_types
[
0
]);
i
++
)
{
range
=
asn1constraint_compute_PER_range
(
range
=
asn1constraint_compute_constraint_range
(
arg
->
expr
->
Identifier
,
etype
,
etype
,
arg
->
expr
->
combined_constraints
,
arg
->
expr
->
combined_constraints
,
test_types
[
i
],
0
,
0
,
test_types
[
i
],
0
,
0
,
...
...
libasn1fix/asn1fix_crange.c
View file @
a28cbb9f
...
@@ -699,17 +699,21 @@ _range_canonicalize(asn1cnst_range_t *range) {
...
@@ -699,17 +699,21 @@ _range_canonicalize(asn1cnst_range_t *range) {
}
}
asn1cnst_range_t
*
asn1cnst_range_t
*
asn1constraint_compute_OER_range
(
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
asn1constraint_compute_OER_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
requested_ct_type
return
asn1constraint_compute_constraint_range
(
expr_type
,
ct
,
type
,
minmax
,
exmet
,
cpr_flags
);
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
return
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
,
requested_ct_type
,
minmax
,
exmet
,
cpr_flags
|
CPR_strict_OER_visibility
);
}
}
asn1cnst_range_t
*
asn1cnst_range_t
*
asn1constraint_compute_PER_range
(
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
asn1constraint_compute_PER_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
requested_ct_type
return
asn1constraint_compute_constraint_range
(
expr_type
,
ct
,
type
,
minmax
,
exmet
,
cpr_flags
);
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
if
(
0
)
return
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
,
requested_ct_type
,
minmax
,
exmet
,
cpr_flags
|
CPR_strict_PER_visibility
);
/* Due to pecularities of PER constraint handling, we don't enable strict PER visibility upfront here. */
return
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
,
requested_ct_type
,
minmax
,
exmet
,
cpr_flags
);
}
}
asn1cnst_range_t
*
asn1cnst_range_t
*
asn1constraint_compute_constraint_range
(
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
asn1constraint_compute_constraint_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
const
asn1cnst_range_t
*
minmax
,
int
*
exmet
,
enum
cpr_flags
cpr_flags
)
{
asn1cnst_range_t
*
range
;
asn1cnst_range_t
*
range
;
asn1cnst_range_t
*
tmp
;
asn1cnst_range_t
*
tmp
;
asn1p_value_t
*
vmin
;
asn1p_value_t
*
vmin
;
...
@@ -824,7 +828,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
...
@@ -824,7 +828,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
return
range
;
return
range
;
}
}
assert
(
ct
->
el_count
==
1
);
assert
(
ct
->
el_count
==
1
);
tmp
=
asn1constraint_compute_constraint_range
(
expr_type
,
tmp
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
->
elements
[
0
],
type
,
minmax
,
exmet
,
cpr_flags
);
ct
->
elements
[
0
],
type
,
minmax
,
exmet
,
cpr_flags
);
if
(
tmp
)
{
if
(
tmp
)
{
_range_free
(
range
);
_range_free
(
range
);
...
@@ -843,7 +847,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
...
@@ -843,7 +847,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
/* AND constraints, one after another. */
/* AND constraints, one after another. */
for
(
i
=
0
;
i
<
ct
->
el_count
;
i
++
)
{
for
(
i
=
0
;
i
<
ct
->
el_count
;
i
++
)
{
tmp
=
asn1constraint_compute_constraint_range
(
expr_type
,
tmp
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
->
elements
[
i
],
type
,
ct
->
elements
[
i
],
type
,
ct
->
type
==
ACT_CA_SET
?
range
:
minmax
,
exmet
,
ct
->
type
==
ACT_CA_SET
?
range
:
minmax
,
exmet
,
cpr_flags
);
cpr_flags
);
...
@@ -913,7 +917,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
...
@@ -913,7 +917,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
*/
*/
tmp
=
0
;
tmp
=
0
;
for
(
i
=
0
;
i
<
ct
->
el_count
;
i
++
)
{
for
(
i
=
0
;
i
<
ct
->
el_count
;
i
++
)
{
tmp
=
asn1constraint_compute_constraint_range
(
expr_type
,
tmp
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
->
elements
[
i
],
type
,
minmax
,
exmet
,
ct
->
elements
[
i
],
type
,
minmax
,
exmet
,
cpr_flags
);
cpr_flags
);
if
(
!
tmp
)
{
if
(
!
tmp
)
{
...
@@ -946,7 +950,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
...
@@ -946,7 +950,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
* Canonicalizator will do the union magic.
* Canonicalizator will do the union magic.
*/
*/
for
(;
i
<
ct
->
el_count
;
i
++
)
{
for
(;
i
<
ct
->
el_count
;
i
++
)
{
tmp
=
asn1constraint_compute_constraint_range
(
expr_type
,
tmp
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
->
elements
[
i
],
type
,
minmax
,
exmet
,
ct
->
elements
[
i
],
type
,
minmax
,
exmet
,
cpr_flags
);
cpr_flags
);
if
(
!
tmp
)
{
if
(
!
tmp
)
{
...
@@ -1021,7 +1025,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
...
@@ -1021,7 +1025,7 @@ asn1constraint_compute_constraint_range(asn1p_expr_type_e expr_type, const asn1p
*/
*/
assert
(
ct
->
el_count
>=
1
);
assert
(
ct
->
el_count
>=
1
);
_range_free
(
range
);
_range_free
(
range
);
range
=
asn1constraint_compute_constraint_range
(
expr_type
,
range
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
->
elements
[
0
],
type
,
minmax
,
exmet
,
cpr_flags
);
ct
->
elements
[
0
],
type
,
minmax
,
exmet
,
cpr_flags
);
return
range
;
return
range
;
default:
default:
...
...
libasn1fix/asn1fix_crange.h
View file @
a28cbb9f
...
@@ -45,20 +45,23 @@ enum cpr_flags {
...
@@ -45,20 +45,23 @@ enum cpr_flags {
CPR_strict_PER_visibility
=
0x02
,
CPR_strict_PER_visibility
=
0x02
,
CPR_simulate_fbless_SIZE
=
0x04
,
CPR_simulate_fbless_SIZE
=
0x04
,
};
};
asn1cnst_range_t
*
asn1constraint_compute_OER_range
(
asn1p_expr_type_e
expr_type
,
asn1cnst_range_t
*
asn1constraint_compute_OER_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
required_type
,
enum
asn1p_constraint_type_e
required_type
,
const
asn1cnst_range_t
*
minmax
,
const
asn1cnst_range_t
*
minmax
,
int
*
expectation_met
,
int
*
expectation_met
,
enum
cpr_flags
);
enum
cpr_flags
);
asn1cnst_range_t
*
asn1constraint_compute_PER_range
(
asn1p_expr_type_e
expr_type
,
asn1cnst_range_t
*
asn1constraint_compute_PER_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
required_type
,
enum
asn1p_constraint_type_e
required_type
,
const
asn1cnst_range_t
*
minmax
,
const
asn1cnst_range_t
*
minmax
,
int
*
expectation_met
,
int
*
expectation_met
,
enum
cpr_flags
);
enum
cpr_flags
);
/* Base implementation */
/* Base implementation */
asn1cnst_range_t
*
asn1constraint_compute_constraint_range
(
asn1p_expr_type_e
expr_type
,
asn1cnst_range_t
*
asn1constraint_compute_constraint_range
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
const
asn1p_constraint_t
*
ct
,
const
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
required_type
,
enum
asn1p_constraint_type_e
required_type
,
const
asn1cnst_range_t
*
minmax
,
const
asn1cnst_range_t
*
minmax
,
...
...
libasn1print/asn1print.c
View file @
a28cbb9f
...
@@ -483,12 +483,12 @@ asn1print_crange_value(asn1cnst_edge_t *edge, int as_char) {
...
@@ -483,12 +483,12 @@ asn1print_crange_value(asn1cnst_edge_t *edge, int as_char) {
}
}
static
int
static
int
asn1print_constraint_explain_type
(
asn1p_expr_type_e
expr_type
,
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
enum
cpr_flags
cpr
)
{
asn1print_constraint_explain_type
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
asn1p_constraint_t
*
ct
,
enum
asn1p_constraint_type_e
type
,
enum
cpr_flags
cpr
)
{
asn1cnst_range_t
*
range
;
asn1cnst_range_t
*
range
;
int
as_char
=
(
type
==
ACT_CT_FROM
);
int
as_char
=
(
type
==
ACT_CT_FROM
);
int
i
;
int
i
;
range
=
asn1constraint_compute_constraint_range
(
expr_type
,
ct
,
type
,
0
,
0
,
cpr
);
range
=
asn1constraint_compute_constraint_range
(
dbg_name
,
expr_type
,
ct
,
type
,
0
,
0
,
cpr
);
if
(
!
range
)
return
-
1
;
if
(
!
range
)
return
-
1
;
if
(
range
->
incompatible
)
return
0
;
if
(
range
->
incompatible
)
return
0
;
...
@@ -538,14 +538,14 @@ asn1print_constraint_explain_type(asn1p_expr_type_e expr_type, asn1p_constraint_
...
@@ -538,14 +538,14 @@ asn1print_constraint_explain_type(asn1p_expr_type_e expr_type, asn1p_constraint_
}
}
static
int
static
int
asn1print_constraint_explain
(
asn1p_expr_type_e
expr_type
,
asn1print_constraint_explain
(
const
char
*
dbg_name
,
asn1p_expr_type_e
expr_type
,
asn1p_constraint_t
*
ct
,
enum
cpr_flags
cpr
)
{
asn1p_constraint_t
*
ct
,
enum
cpr_flags
cpr
)
{
asn1print_constraint_explain_type
(
expr_type
,
ct
,
ACT_EL_RANGE
,
cpr
);
asn1print_constraint_explain_type
(
dbg_name
,
expr_type
,
ct
,
ACT_EL_RANGE
,
cpr
);
safe_printf
(
" "
);
safe_printf
(
" "
);
asn1print_constraint_explain_type
(
expr_type
,
ct
,
ACT_CT_SIZE
,
cpr
);
asn1print_constraint_explain_type
(
dbg_name
,
expr_type
,
ct
,
ACT_CT_SIZE
,
cpr
);
safe_printf
(
" "
);
safe_printf
(
" "
);
asn1print_constraint_explain_type
(
expr_type
,
ct
,
ACT_CT_FROM
,
cpr
);
asn1print_constraint_explain_type
(
dbg_name
,
expr_type
,
ct
,
ACT_CT_FROM
,
cpr
);
return
0
;
return
0
;
}
}
...
@@ -758,15 +758,18 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
...
@@ -758,15 +758,18 @@ asn1print_expr(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *tc, enum asn1pri
if
(
top_parent
)
{
if
(
top_parent
)
{
safe_printf
(
"
\n
-- Practical constraints (%s): "
,
safe_printf
(
"
\n
-- Practical constraints (%s): "
,
top_parent
->
Identifier
);
top_parent
->
Identifier
);
asn1print_constraint_explain
(
top_parent
->
expr_type
,
asn1print_constraint_explain
(
top_parent
->
Identifier
,
top_parent
->
expr_type
,
tc
->
combined_constraints
,
0
);
tc
->
combined_constraints
,
0
);
safe_printf
(
"
\n
-- OER-visible constraints (%s): "
,
safe_printf
(
"
\n
-- OER-visible constraints (%s): "
,
top_parent
->
Identifier
);
top_parent
->
Identifier
);
asn1print_constraint_explain
(
top_parent
->
expr_type
,
asn1print_constraint_explain
(
top_parent
->
Identifier
,
top_parent
->
expr_type
,
tc
->
combined_constraints
,
CPR_strict_OER_visibility
);
tc
->
combined_constraints
,
CPR_strict_OER_visibility
);
safe_printf
(
"
\n
-- PER-visible constraints (%s): "
,
safe_printf
(
"
\n
-- PER-visible constraints (%s): "
,
top_parent
->
Identifier
);
top_parent
->
Identifier
);
asn1print_constraint_explain
(
top_parent
->
expr_type
,
asn1print_constraint_explain
(
top_parent
->
Identifier
,
top_parent
->
expr_type
,
tc
->
combined_constraints
,
CPR_strict_PER_visibility
);
tc
->
combined_constraints
,
CPR_strict_PER_visibility
);
}
}
safe_printf
(
"
\n
"
);
safe_printf
(
"
\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment