An interpreter for finding subtle bugs in programs written in standard C
Branch: master
Clone or download
Latest commit 33132ce Dec 14, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin first commit Mar 25, 2016
devel_tools
doc
filesystem
lib
licenses Release tis-mkfs and show how to use it in an example Apr 9, 2016
man
old
share
src
tis-interpreter
.force-reconfigure
.gitignore
.make-clean first commit Mar 25, 2016
.make-clean-stamp first commit Mar 25, 2016
.make-ocamlgraph
.make-ocamlgraph-stamp
.travis.yml Set up Travis-CI. Thanks to Dan Guido for showing how. Apr 9, 2016
INSTALL.md
Makefile tweak Makefile Jul 30, 2016
Makefile.generating
README.md
VERSION
config.h.in
configure
configure.in
keep_only_useful_files.sh
ocamlgraph.tar.gz

README.md

tis-interpreter

This is tis-interpreter, an interpreter of C for detecting undefined behavior.

tis-interpreter detects subtle bugs in C programs that may not have eye-visible effects when executing the same programs compiled in the traditional way. Some of the bugs that are discovered lead to security vulnerabilities. Fortunately, most don’t.

tis-interpreter works by interpreting C programs statement by statement from beginning to end, verifying at each statement whether the program can invoke undefined behavior. This makes it comparable to Valgrind and C compiler sanitizers (UBSan, ASan, …). The recommended use is to apply tis-interpreter to existing tests for security-sensitive C code in which a bug could have dramatic consequences. tis-interpreter can detect violations of the C standard even when applied to regression tests that have never revealed any problem.

At this stage, the best uses for tis-interpreter are pure C libraries with as few dependencies as possible and existing tests. After compilation (or after downloading a binary snapshot), you can experiment with examples of increasing difficulty.

Binary snapshot

2016-05 x86-64 Linux binary snapshot of commit 275f0a4 (sha256sum 4ae640405dc3080d8ac713cfb908ff80f51040dee19f56dbf1a949c37c7383a7)