# Compile emitting LLVM bytecode to attract KLEE to its prey :-) user@machine:~/folder$ clang -I../klee/include -emit-llvm -c -g base64encode.c base64encode.c:37:3: warning: implicit declaration of function '__assert_fail' is invalid in C99 [-Wimplicit-function-declaration] klee_assert(!(!error && ^ ../klee/include/klee/klee.h:96:6: note: expanded from macro 'klee_assert' : __assert_fail (#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__)) \ ^ 1 warning generated. # Release the KLEEken! user@machine:~/folder$ time klee --libc=uclibc --posix-runtime base64encode.bc KLEE: NOTE: Using klee-uclibc : /home/user/klee/Release+Asserts/lib/klee-uclibc.bca KLEE: NOTE: Using model: /home/user/klee/Release+Asserts/lib/libkleeRuntimePOSIX.bca KLEE: output directory is "/home/user/folder/klee-out-0" KLEE: WARNING: undefined reference to function: klee_posix_prefer_cex KLEE: WARNING ONCE: calling external: syscall(16, 0, 21505, 35235760) KLEE: WARNING ONCE: calling __user_main with extra arguments. KLEE: ERROR: /home/user/folder/base64encode.c:37: ASSERTION FAIL: !(!error && new_dest_size == dest_size && same(new_dest, dest, new_dest_size)) KLEE: NOTE: now ignoring this error at this location KLEE: done: total instructions = 7742 KLEE: done: completed paths = 20 KLEE: done: generated tests = 20 real 0m1.706s user 0m1.555s sys 0m0.150s # That was fast... could it be? user@machine:~/folder$ ls klee-last/*.err klee-last/test000020.assert.err # No escape from KLEEality! :-) user@machine:~/folder$ ktest-tool klee-last/test000020.ktest ktest file : 'klee-last/test000020.ktest' args : ['base64encode.bc'] num objects: 2 object 0: name: 'model_version' object 0: size: 4 object 0: data: '\x01\x00\x00\x00' object 1: name: 'new_src' object 1: size: 14 object 1: data: 'Hello, world!\x00'