Merge branch 'master' of github.com:trailofbits/deepstate

This commit is contained in:
Peter Goodman
2018-07-25 15:34:16 -04:00
2 changed files with 11 additions and 10 deletions

View File

@@ -35,7 +35,7 @@ DeepState currently targets Linux, with macOS support in progress.
Build:
- CMake
- GCC with multilib support
- GCC and G++ with multilib support
- Python 2.7
- Setuptools
@@ -47,11 +47,11 @@ Runtime:
## Building on Ubuntu 16.04 (Xenial)
```shell
$ sudo apt update && sudo apt-get install build-essential gcc-multilib cmake python python-setuptools libffi-dev
$ git clone https://github.com/trailofbits/deepstate deepstate
$ mkdir deepstate/build && cd deepstate/build
$ cmake ../
$ make
sudo apt update && sudo apt-get install build-essential gcc-multilib g++-multilib cmake python python-setuptools libffi-dev z3
git clone https://github.com/trailofbits/deepstate deepstate
mkdir deepstate/build && cd deepstate/build
cmake ../
make
```
## Installing
@@ -59,9 +59,9 @@ $ make
Assuming the DeepState build resides in `$DEEPSTATE`, run the following commands to install the DeepState python package:
```shell
$ virtualenv venv
$ . venv/bin/activate
$ python $DEEPSTATE/build/setup.py install
virtualenv venv
. venv/bin/activate
python $DEEPSTATE/build/setup.py install
```
The `virtualenv`-enabled `$PATH` should now include two executables: `deepstate` and `deepstate-angr`. These are _executors_, which are used to run DeepState test binaries with specific backends (automatically installed as Python dependencies). The `deepstate` executor uses the Manticore backend while `deepstate-angr` uses angr. They share a common interface where you may specify a number of workers and an output directory for saving backend-generated test cases.
@@ -69,7 +69,7 @@ The `virtualenv`-enabled `$PATH` should now include two executables: `deepstate`
You can check your build using the test binaries that were (by default) built and emitted to `deepstate/build/examples`. For example, to use angr to symbolically execute the `IntegerOverflow` test harness with 4 workers, saving generated test cases in a directory called `out`, you would invoke:
```shell
$ deepstate-angr --num_workers 4 --output_test_dir out $DEEPSTATE/build/examples/IntegerOverflow
deepstate-angr --num_workers 4 --output_test_dir out $DEEPSTATE/build/examples/IntegerOverflow
```
The resulting `out` directory should look something like:

View File

@@ -438,6 +438,7 @@ class DeepState(object):
return
expr_ea = self.concretize(expr_ea, constrain=True)
file_ea = self.concretize(file_ea, constrain=True)
constraint = arg != 0
if not self.add_constraint(constraint):
expr, _ = self.read_c_string(expr_ea, concretize=False)