Skip to content

Void pointer argument cannot be pointer-checked #4930

Closed
@xbauch

Description

@xbauch
#include <assert.h>

void foo(void *arg)
{
  assert(*(unsigned *)(arg) == 5);
}

CBMC version: 5.12 (cbmc-5.12-d8598f8-552-g03cc69c04-dirty)
Operating system: Ubuntu 18.04
Exact command line resulting in the issue: $ cbmc main.c --function foo --pointer-check
What behaviour did you expect: VERIFICATION FAILED
What happened instead:

--- begin invariant violation report ---
Invariant check failed
File: /home/diffblue/petr.bauch/code/cbmc/src/analyses/goto_check.cpp:1116 function: pointer_validity_check
Condition: size_of_expr_opt.has_value()
Reason: Check return value
Backtrace:
cbmc(print_backtrace(std::ostream&)+0x4d) [0x55c5af45da7a]
cbmc(get_backtrace[abi:cxx11]()+0x45) [0x55c5af45dc81]
cbmc(std::enable_if<std::is_base_of<invariant_failedt, invariant_failedt>::value, void>::type invariant_violated_structured<invariant_failedt, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x4e) [0x55c5aed83491]
cbmc(+0x711c3d) [0x55c5aed82c3d]
cbmc(goto_checkt::pointer_validity_check(dereference_exprt const&, exprt const&, guard_exprt const&)+0x17b) [0x55c5aeff43eb]
cbmc(goto_checkt::check_rec(exprt const&, guard_exprt&)+0x654) [0x55c5aeffa79a]
cbmc(goto_checkt::check(exprt const&)+0x6a) [0x55c5aeffa820]
cbmc(goto_checkt::goto_check(dstringt const&, goto_functiont&)+0xb0f) [0x55c5aeffb9e9]
cbmc(goto_check(namespacet const&, optionst const&, goto_functionst&)+0xec) [0x55c5aeffd7a4]
cbmc(goto_check(optionst const&, goto_modelt&)+0x55) [0x55c5aeffd85f]
cbmc(cbmc_parse_optionst::process_goto_program(goto_modelt&, optionst const&, messaget&)+0x310) [0x55c5aed8cff4]
cbmc(cbmc_parse_optionst::get_goto_program(goto_modelt&, optionst const&, cmdlinet const&, ui_message_handlert&)+0x15d) [0x55c5aed8c773]
cbmc(cbmc_parse_optionst::doit()+0x747) [0x55c5aed8afe9]
cbmc(parse_options_baset::main()+0x114) [0x55c5af4825c2]
cbmc(main+0x55) [0x55c5aed8292f]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f96e7d0fb97]
cbmc(_start+0x2a) [0x55c5aed827fa]


--- end invariant violation report ---

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions