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
fbfc7bcb
Commit
fbfc7bcb
authored
Aug 28, 2006
by
Lev Walkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
declashing
parent
62e48d3d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
47 additions
and
29 deletions
+47
-29
libasn1fix/asn1fix.c
libasn1fix/asn1fix.c
+1
-1
libasn1fix/asn1fix_bitstring.c
libasn1fix/asn1fix_bitstring.c
+12
-4
libasn1fix/asn1fix_enum.c
libasn1fix/asn1fix_enum.c
+1
-1
libasn1fix/asn1fix_integer.c
libasn1fix/asn1fix_integer.c
+3
-2
libasn1fix/asn1fix_misc.c
libasn1fix/asn1fix_misc.c
+10
-15
libasn1fix/asn1fix_misc.h
libasn1fix/asn1fix_misc.h
+4
-6
tests/116-bit-string-SE.asn1
tests/116-bit-string-SE.asn1
+16
-0
No files found.
libasn1fix/asn1fix.c
View file @
fbfc7bcb
...
...
@@ -385,7 +385,7 @@ asn1f_fix_constructed(arg_t *arg) {
}
/* Check identifier distinctness */
ret
=
asn1f_check_unique_expr
(
arg
,
NULL
);
ret
=
asn1f_check_unique_expr
(
arg
);
RET2RVAL
(
ret
,
rvalue
);
/* Fix extensibility */
...
...
libasn1fix/asn1fix_bitstring.c
View file @
fbfc7bcb
...
...
@@ -32,6 +32,10 @@ asn1f_fix_bit_string(arg_t *arg) {
return
r_value
;
}
static
int
_compare_value
(
asn1p_expr_t
*
expr1
,
asn1p_expr_t
*
expr2
)
{
return
expr2
->
value
->
value
.
v_integer
-
expr1
->
value
->
value
.
v_integer
;
}
static
int
asn1f_fix_bit_string_type
(
arg_t
*
arg
)
{
asn1p_expr_t
*
expr
=
arg
->
expr
;
...
...
@@ -40,10 +44,6 @@ asn1f_fix_bit_string_type(arg_t *arg) {
int
ret
;
TQ_FOR
(
v
,
&
(
expr
->
members
),
next
)
{
/* Check identifier uniqueness as per 21.4 */
ret
=
asn1f_check_unique_expr_child
(
arg
,
v
,
0
);
RET2RVAL
(
ret
,
r_value
);
if
(
v
->
expr_type
==
A1TC_EXTENSIBLE
)
{
FATAL
(
"Extension marker (...) is not allowed "
"as a BIT STRING NamedBit at line %d "
,
...
...
@@ -74,6 +74,14 @@ asn1f_fix_bit_string_type(arg_t *arg) {
v
->
_lineno
);
return
-
1
;
}
/* Check value uniqueness as per 21.4 */
ret
=
asn1f_check_unique_expr_child
(
arg
,
v
,
_compare_value
,
"value"
);
RET2RVAL
(
ret
,
r_value
);
/* Check identifier uniqueness as per 21.5 */
ret
=
asn1f_check_unique_expr_child
(
arg
,
v
,
0
,
"identifier"
);
RET2RVAL
(
ret
,
r_value
);
}
return
r_value
;
...
...
libasn1fix/asn1fix_enum.c
View file @
fbfc7bcb
...
...
@@ -119,7 +119,7 @@ asn1f_fix_enum(arg_t *arg) {
* 1.4 Check that all identifiers before the current one
* differs from it.
*/
ret
=
asn1f_check_unique_expr_child
(
arg
,
ev
,
NULL
);
ret
=
asn1f_check_unique_expr_child
(
arg
,
ev
,
0
,
"identifier"
);
RET2RVAL
(
ret
,
rvalue
);
}
...
...
libasn1fix/asn1fix_integer.c
View file @
fbfc7bcb
...
...
@@ -92,12 +92,13 @@ asn1f_fix_integer(arg_t *arg) {
/*
* Check that all identifiers are distinct.
*/
ret
=
asn1f_check_unique_expr_child
(
arg
,
iv
,
NULL
);
ret
=
asn1f_check_unique_expr_child
(
arg
,
iv
,
0
,
"identifier"
);
RET2RVAL
(
ret
,
rvalue
);
/*
* Check that all values are distinct.
*/
ret
=
asn1f_check_unique_expr_child
(
arg
,
iv
,
_compare_value
);
ret
=
asn1f_check_unique_expr_child
(
arg
,
iv
,
_compare_value
,
"value"
);
RET2RVAL
(
ret
,
rvalue
);
}
...
...
libasn1fix/asn1fix_misc.c
View file @
fbfc7bcb
...
...
@@ -236,15 +236,14 @@ asn1f_recurse_expr(arg_t *arg, int (*callback)(arg_t *arg)) {
* Check that every child of a given expr has unique name or does not have any.
*/
int
asn1f_check_unique_expr
(
arg_t
*
arg
,
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
))
{
asn1f_check_unique_expr
(
arg_t
*
arg
)
{
asn1p_expr_t
*
expr
;
int
rvalue
=
0
;
TQ_FOR
(
expr
,
&
(
arg
->
expr
->
members
),
next
)
{
if
(
expr
->
Identifier
)
{
int
ret
=
asn1f_check_unique_expr_child
(
arg
,
expr
,
opt_compare
);
0
,
"identifier"
);
if
(
ret
)
rvalue
=
-
1
;
}
else
{
/*
...
...
@@ -263,9 +262,11 @@ asn1f_check_unique_expr(arg_t *arg,
*/
int
asn1f_check_unique_expr_child
(
arg_t
*
arg
,
asn1p_expr_t
*
child
,
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
))
{
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
),
const
char
*
opt_property_name
)
{
asn1p_expr_t
*
expr
;
int
rvalue
=
0
;
if
(
!
opt_property_name
)
opt_property_name
=
"property"
;
assert
(
child
);
assert
(
opt_compare
||
child
->
Identifier
);
...
...
@@ -290,26 +291,20 @@ asn1f_check_unique_expr_child(arg_t *arg, asn1p_expr_t *child,
}
if
(
ret
==
0
)
{
char
*
msg
;
msg
=
opt_compare
?
"Expressions clash"
:
"Identifiers name clash"
;
FATAL
(
"%s: "
FATAL
(
"Clash detected: "
"
\"
%s
\"
at line %d has similar %s with "
"
\"
%s
\"
at line %d"
,
msg
,
expr
->
Identifier
,
expr
->
_lineno
,
opt_
compare
?
"property"
:
"name"
,
opt_
property_name
,
child
->
Identifier
,
child
->
_lineno
);
rvalue
=
-
1
;
return
-
1
;
}
}
return
rvalue
;
return
0
;
}
int
...
...
libasn1fix/asn1fix_misc.h
View file @
fbfc7bcb
...
...
@@ -11,12 +11,9 @@
int
asn1f_recurse_expr
(
arg_t
*
arg
,
int
(
*
f
)(
arg_t
*
arg
));
/*
* Check that every child of a given expr has unique name or does not have any.
* If opt_compare == NULL, the default comparison of the argument's
* names (identifiers) will be performed.
* Check that every child of a given expr has unique identifier.
*/
int
asn1f_check_unique_expr
(
arg_t
*
arg
,
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
));
int
asn1f_check_unique_expr
(
arg_t
*
arg
);
/*
* Check that every preceeding child of the given expr is not
...
...
@@ -25,7 +22,8 @@ int asn1f_check_unique_expr(arg_t *arg,
* names (identifiers) will be performed.
*/
int
asn1f_check_unique_expr_child
(
arg_t
*
arg
,
asn1p_expr_t
*
child
,
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
));
int
(
*
opt_compare
)(
asn1p_expr_t
*
a
,
asn1p_expr_t
*
b
),
const
char
*
opt_property_name
);
/*
* Return number of children.
...
...
tests/116-bit-string-SE.asn1
0 → 100644
View file @
fbfc7bcb
-- SE: Semantic error
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .116
ModuleBitStringSameValues
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 116 }
DEFINITIONS ::=
BEGIN
T ::= BIT STRING { one(1), another(1) }
END
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