KLEE LLVM Execution Engine
klee.github.io
KLEE LLVM Execution Engine
1–10 of 22 posts
Re: KLEE LLVM Execution Engine
#2Re: KLEE LLVM Execution Engine
#3Anyone using this in practice?
Similarly, if I make a change which I don't expect to change the output of the parser, then I can use this test suite to be quite sure that my change hasn't changed behaviour.
One thing I am unclear about is what it means for klee to be "done" on my binary. When it has generated all the test cases, if none of them crash my binary, then does that mean it is impossible to crash my binary in 10 bytes of input?
Re: KLEE LLVM Execution Engine
#4Re: KLEE LLVM Execution Engine
#5Anyone using this in practice?
I use it - I am writing a subset-of-yaml parser, and I've littered the code with a bunch of abort()/assert() statements for things I don't think should be possible. Running klee over my code spits out ~100K test cases (I let it use any 10 byte YAML input), and so while I don't inspect the output of any of the cases - I do make sure that none of them crash. Similarly, if I make a change which I don't expect to change…
Re: KLEE LLVM Execution Engine
#6Anyone using this in practice?
I use it - I am writing a subset-of-yaml parser, and I've littered the code with a bunch of abort()/assert() statements for things I don't think should be possible. Running klee over my code spits out ~100K test cases (I let it use any 10 byte YAML input), and so while I don't inspect the output of any of the cases - I do make sure that none of them crash. Similarly, if I make a change which I don't expect to change…
Re: KLEE LLVM Execution Engine
#7What is CS 101 explanation for this project?
> KLEE [runs] a program considering its input(or some other variables) to be symbols instead of concrete values like 100 or “cacho”. In very few words, a symbolic execution runs through the code propagating symbols and conditions; forking execution at symbol dependant branches and asking the companion SMT solver for path feasibility or counter-examples.
Re: KLEE LLVM Execution Engine
#8Earlier quoted context omitted.
I use it - I am writing a subset-of-yaml parser, and I've littered the code with a bunch of abort()/assert() statements for things I don't think should be possible. Running klee over my code spits out ~100K test cases (I let it use any 10 byte YAML input), and so while I don't inspect the output of any of the cases - I do make sure that none of them crash. Similarly, if I make a change which I don't expect to change…
if your program calls system call or random function which KLEE couldn't handle, some parts of code may not be tested. KLEE uses its special libc (uclibc) to deal with that cases in glibc. To solve this problem perfectly, we usually uses S2E instead of KLEE in large and complex softwares ( http://s2e.systems/ )
Re: KLEE LLVM Execution Engine
#9Earlier quoted context omitted.
I use it - I am writing a subset-of-yaml parser, and I've littered the code with a bunch of abort()/assert() statements for things I don't think should be possible. Running klee over my code spits out ~100K test cases (I let it use any 10 byte YAML input), and so while I don't inspect the output of any of the cases - I do make sure that none of them crash. Similarly, if I make a change which I don't expect to change…
Can you share more details about this? Is the work already public?
Re: KLEE LLVM Execution Engine
#10Anyone using this in practice?
I use it - I am writing a subset-of-yaml parser, and I've littered the code with a bunch of abort()/assert() statements for things I don't think should be possible. Running klee over my code spits out ~100K test cases (I let it use any 10 byte YAML input), and so while I don't inspect the output of any of the cases - I do make sure that none of them crash. Similarly, if I make a change which I don't expect to change…