diff --git a/libyara/parser.c b/libyara/parser.c index f20df7d00d..7e68457ceb 100644 --- a/libyara/parser.c +++ b/libyara/parser.c @@ -118,8 +118,10 @@ int yr_parser_emit_with_arg_reloc( int64_t* ptr = NULL; int result; - DECLARE_REFERENCE(void*, argument) a; - a.argument = argument; + DECLARE_REFERENCE(void*, ptr) arg; + + memset(&arg, 0, sizeof(arg)); + arg.ptr = argument; result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, @@ -130,8 +132,8 @@ int yr_parser_emit_with_arg_reloc( if (result == ERROR_SUCCESS) result = yr_arena_write_data( yyget_extra(yyscanner)->code_arena, - &a, - sizeof(int64_t), + &arg, + sizeof(arg), (void**) &ptr); if (result == ERROR_SUCCESS) @@ -142,7 +144,7 @@ int yr_parser_emit_with_arg_reloc( EOL); if (argument_address != NULL) - *argument_address = (void*)ptr; + *argument_address = (void*) ptr; return result; }