Fix segmentation fault in asn1c_make_identifier
See also http://stackoverflow.com/questions/25390720/va-arg-gives-something-strange-in-cygwin-x64
Program received signal SIGSEGV, Segmentation fault.
(gdb) bt
#0 0x00007ffff7b7c8f1 in __strlen_sse2_pminub () from /lib64/libc.so.6
#1 0x0000000000425d29 in asn1c_make_identifier (flags=flags@entry=(AMI_MASK_ONLY_SPACES | AMI_NODELIMITER), expr=expr@entry=0x0) at asn1c_misc.c:73
#2 0x00000000004263ec in asn1c_type_name (arg=arg@entry=0x7fffffffe000, expr=expr@entry=0x6757c0, _format=<optimized out>,
_format@entry=TNF_INCLUDE) at asn1c_misc.c:268
#3 0x00000000004226fc in asn1c_lang_C_type_SIMPLE_TYPE (arg=arg@entry=0x7fffffffe000) at asn1c_C.c:1119
#4 0x00000000004232c1 in asn1c_lang_C_type_common_INTEGER (arg=0x7fffffffe000) at asn1c_C.c:251
#5 0x0000000000419c75 in asn1c_compile_expr (arg=arg@entry=0x7fffffffe000) at asn1compiler.c:100
#6 0x0000000000419f33 in asn1_compile (asn=asn@entry=0x671e10, datadir=datadir@entry=0x426730 "/home/vasko/usr/share/asn1c",
flags=flags@entry=A1C_NO_C99, argc=2, optc=0, argv=0x7fffffffe268) at asn1compiler.c:44
#7 0x0000000000401f13 in main (ac=1, av=0x7fffffffe270) at asn1c.c:328
diff --git a/libasn1compiler/asn1c_misc.c b/libasn1compiler/asn1c_misc.c
index 0762850..90c669a 100644
--- a/libasn1compiler/asn1c_misc.c
+++ b/libasn1compiler/asn1c_misc.c
@@ -263,7 +263,7 @@
switch(_format) {
case TNF_UNMODIFIED:
return asn1c_make_identifier(AMI_MASK_ONLY_SPACES,
- 0, exprid ? exprid->Identifier : typename, 0);
+ 0, exprid ? exprid->Identifier : typename, (char*)0);
case TNF_INCLUDE:
return asn1c_make_identifier(
AMI_MASK_ONLY_SPACES | AMI_NODELIMITER,
@@ -271,15 +271,15 @@
? "\"" : "<"),
exprid ? exprid->Identifier : typename,
((!stdname || (arg->flags & A1C_INCLUDES_QUOTED))
- ? ".h\"" : ".h>"), 0);
+ ? ".h\"" : ".h>"), (char*)0);
case TNF_SAFE:
- return asn1c_make_identifier(0, exprid, typename, 0);
+ return asn1c_make_identifier(0, exprid, typename, (char*)0);
case TNF_CTYPE: /* C type */
return asn1c_make_identifier(0, exprid,
- exprid?"t":typename, exprid?0:"t", 0);
+ exprid?"t":typename, exprid?0:"t", (char*)0);
case TNF_RSAFE: /* Recursion-safe type */
return asn1c_make_identifier(AMI_CHECK_RESERVED, 0,
- "struct", " ", typename, 0);
+ "struct", " ", typename, (char*)0);
}
assert(!"unreachable");