Commit Graph
1051 Commits
Author SHA1 Message Date
Samuel Moelius cca9dbfc29 Eliminate new_storage method. 2020-06-12 18:56:03 +00:00
Samuel Moelius ebd8cc07da Balance width fix was incomplete. 2020-06-12 18:27:26 +00:00
Samuel Moelius 3fc4264caa Fix bug concerning balance width. 2020-06-12 18:22:21 +00:00
Samuel Moelius 4a23d8af71 Up SMT timeout for metacoin tests. 2020-06-12 17:15:44 +00:00
Samuel Moelius 8af686935b More ci.yml fixes. 2020-06-12 16:55:42 +00:00
Samuel Moelius 94055f91c6 Coverage fixes in ci.yml. 2020-06-12 16:28:35 +00:00
Samuel Moelius cc97a385f6 Convert gas to constant in make_VMTests.py. 2020-06-12 13:07:06 +00:00
Samuel Moelius 3446e211bd Implement Storage.__copy__. 2020-06-12 13:05:50 +00:00
Samuel Moelius 7a382812d8 Turn off detectors in truffle maze test. 2020-06-12 09:58:04 +00:00
Samuel Moelius 399dd089b0 Handle case where EXP's exponent is a symbolic constant. 2020-06-12 03:19:09 +00:00
Samuel Moelius f257ec8968 More merge bug fixes. 2020-06-12 02:31:00 +00:00
Samuel Moelius c29a24a204 Fix bugs introduced by merge. 2020-06-12 01:14:37 +00:00
Samuel Moelius 6b3dbf3683 Simplify Storage.get. 2020-06-12 01:12:31 +00:00
Samuel Moelius 2215ba8707 Eliminate unused imports. 2020-06-12 01:12:04 +00:00
Samuel Moelius a4c599decb Callstack type has changed. 2020-06-11 19:42:42 +00:00
Samuel Moelius 02a540e7e0 Nominal changes. 2020-06-11 14:19:44 +00:00
Samuel Moelius 91d48ed55b Use self._set_storage. 2020-06-11 13:53:21 +00:00
Samuel Moelius 1de8eba74d Use self.get_storage. 2020-06-11 13:50:03 +00:00
Samuel Moelius 3a0136067d Set blockheader information. 2020-06-11 11:57:51 +00:00
Samuel Moelius 15d5366e28 Add comment re disabling uninitialized storage detector. 2020-06-11 11:46:47 +00:00
Samuel Moelius c4a0471ddf Fiz __getstae__/__setstate__ names. 2020-06-11 11:41:44 +00:00
Samuel Moelius b8880cf255 Interpret coinbase as hex. 2020-06-11 11:29:18 +00:00
Samuel Moelius 60daa52ed9 Blacken. 2020-06-11 11:22:04 +00:00
Samuel Moelius 45b87b83dc Correct bitvec width in add_to/sub_from_balance. 2020-06-11 11:14:39 +00:00
Samuel Moelius 49707bdc45 Merge remote-tracking branch 'origin/master' into dev-connect-to-eth-node 2020-06-11 10:55:34 +00:00
bdbd0391c8 Symbolic model for strcpy (#1681)
* Working copy for strcpy - without symbolic input

* Corrected null term error

* Needs to be tested but general algorithm idea for handling symbolic input

* Updated according to feedback

* Beginning of strcpy tests

* Revising strcpy algorithm - realised it was flawed

* This should be a more correct way of handling symbolic bytes. Needs testing

* Get rid of redundant code

* Fixed another typo

* Update manticore/native/models.py

Co-Authored-By: Eric Kilmer <[email protected]>

* Clarified and updated comments

* Fixed some errors in model while working on tests

* Progress on tests

* Found typo in models

* Removed unnecassary whitespace

* Added some helper functions for tests and to clean things up

* Added comments for helper functions

* WIP: current state of strcpy tests

* Updated type hints from Expression to BitVec

* Fixed linter complaints

* Updated strcpy return type to make linter happy

* Added some helper properties to expression BitVecITE

* Overwrote equal op in ArraySelect

* Fixed formatting in expression

* Almost done just needs some cleaning

* Attempt at overriding __eq__ again

* Cleaned up tests some still have unresolved __eq__ issues

* Removed stuff from expression and updated test_models.py

* Removed stuff from expression and updated test_models.py

* Basicly done probably needs some more comments for clarity

* Cleaned up the tests a little

* Corrected linter error and added more comments to strcpy model functions

* Remove duplicated word in comment

Co-authored-by: Eric Kilmer <[email protected]>

* Update manticore/native/models.py

Co-authored-by: Brad Larsen <[email protected]>

* Update manticore/native/models.py

Co-authored-by: Brad Larsen <[email protected]>

* Update tests/native/test_models.py

Co-authored-by: Brad Larsen <[email protected]>

* Updates according to feedback

* Swapped can_be_true and must be true

* Updates for feedback

* Forgot to lint

* Fixed some typos

* Largely simplified ITE being built

* Forgot to lint

* This is messy but seems to be concretizing to the correct states

* Very very messy state of the code before attempting to concretize on every possible NULL

* Cleaned up model with forking on every possible NULL

* Removed trailing whitespace for CodeClimate

* Added state.context for offset value back

* New symbolic test with regex for expected output

* New symbolic test with regex for expected output

* Updated for mypy

* Updated comments in tests

* Updated cant_be_null to cannot_be_null

* Corrected docstring location for _test_strcpy

* Add break for efficiency

* Added compiler information and source file

* Updated regex to use raw strings

Co-authored-by: Eric Kilmer <[email protected]>
Co-authored-by: Brad Larsen <[email protected]>
2020-06-09 17:12:19 -04:00
feliamandEric Kilmer ddec477dbd Rollback to support yices again (#1714)
* Rollback to support yices again

* CC

* Test yices

* Better get-value handling

* Z3/CVC4/YICES

* CC

* Yices/CVC4

* CC

* Default yices

* Default debug level fix

* Quick auto solver

* shutil.which

* CC

* Default yices for testing

* Remove old commented out code

* Update manticore/core/smtlib/solver.py

Co-authored-by: Eric Kilmer <[email protected]>

* Update manticore/core/smtlib/solver.py

Co-authored-by: Eric Kilmer <[email protected]>

* Remove unused class

* Update manticore/core/smtlib/solver.py

Co-authored-by: Eric Kilmer <[email protected]>

* Update manticore/core/smtlib/solver.py

Co-authored-by: Eric Kilmer <[email protected]>

* Readme hack

* CC/lint

* Fix typing

* z3 back to the rodeo

* lint

* Fancy optimize

* Fix lint

* CC reviewed

Co-authored-by: Eric Kilmer <[email protected]>
2020-06-09 16:16:18 -03:00
feliam 7f5f12c5a7 Fix default output space when workspace is in mem: (#1724) 2020-06-09 11:37:38 -03:00
4495b6f03e VMTests tests for istanbul (#1676)
* New upstream auto-VMTests tests for istanbul

* Removed redundant tests

* bugfix

* Reset CI

* Debug CI 1

* debug CI

* wakey wakey GitHub Actions

* Poke GH

* Fix detector

* New CI weaky weaky

* Change default smtlib max memory usage weaky weaky

* ci weaky waky

* ci weaky waky

* CI waky weaky

* Fix test_general weaky weaky

* Fix ethtests. weaky waky

* Unittest driven bugfixes. weaky waky

* Avoid check-sat in the middle of a solving. weaky wakey

* Fix config. weaky wakey

* Reduce queries in IO detector

* CC

* CC

* fix nativve tests

* CC and solver defaults

* merge. weaky waky

* Fixing tests

* Remove debug print

* Fix in DetectUninitializedMemory

* Change truffle test state count

* CC

* Better forking on failed transactions

* CC

* Fix truffle tst state count

* Improve z3 speed

* Fix truffle test state count

* Change default gas concretization in CALL

* Better logging at fork

* Insane commit to fix several bugfixes and refator stuff

* black

* Fix selfdestruct test

* Fix some unittests

* Default to bytes fo constant calldata

* Fix tests

* Better doc

* https://github.com/trailofbits/manticore/pull/1676/files#r426927762

* https://github.com/trailofbits/manticore/pull/1676/files#r426946198

* Leave native alone and fix pyevmasm dep

* Update manticore/platforms/evm.py

Co-authored-by: Eric Hennenfent <[email protected]>

* Update manticore/platforms/evm.py

Co-authored-by: Eric Hennenfent <[email protected]>

* isSeven

* OPTI/PESI

* Truffle optimistic

* truffle fix

* Truffle state count

* CC

* Fix tests PESI/OPTI

* Update manticore/core/state.py

Co-authored-by: Samuel E. Moelius <[email protected]>

* Better policy naming

* Update manticore/platforms/evm.py

Co-authored-by: Samuel E. Moelius <[email protected]>

* Update manticore/ethereum/manticore.py

Co-authored-by: Samuel E. Moelius <[email protected]>

* Update manticore/platforms/evm.py

Co-authored-by: Samuel E. Moelius <[email protected]>

* PESi PESSI

* blkn

* weaky

* wakey wakey

* blkn

* unreachable

* Fix state count in checkpoint test (merge)

* remove unused exception var

Co-authored-by: Eric Hennenfent <[email protected]>
Co-authored-by: Samuel E. Moelius <[email protected]>
2020-06-04 19:27:59 -03:00
feliamandEric Hennenfent 3650e577bd Snapshots & is_main (#1710)
* Snapshots

* CC

* Allow snapshooting just from main()

* A test

* Test and fix is_main

* CC

* review

* ismain vs is_running

* is main to is main script

* Remove unused member variable

* Fix is main variable

* Update manticore/core/manticore.py

Co-authored-by: Eric Hennenfent <[email protected]>

* review

* blkn

* Betteer Exception handling

* Lint and test

Co-authored-by: Eric Hennenfent <[email protected]>
2020-06-02 18:03:01 -03:00
Eric Hennenfent 6747143eca Fix Black (#1718)
* Use merge SHA instead of head

Github Actions doesn't update the head variable despite the checkout action merging the active branch into `master`, so the commit range specified was invalid

* Start from common ancestor

* Omit explicit SHA

* Lint HEAD instead of merge

* Manually fetch base SHA

* Print the names of files to be diffed

* Update ci.yml

* Modify a Python file

* Blacken everything that was missing

The modified files got missed due to black not properly running on our CI
2020-05-28 12:54:31 -07:00
Samuel Moelius 8f59f394da Merge remote-tracking branch 'origin/master' into dev-connect-to-eth-node 2020-05-25 15:30:25 +00:00
Samuel Moelius 6054033e46 Move get_items into ArrayProxy. 2020-05-25 15:22:28 +00:00
Samuel Moelius 235d0b5796 Add docstring to Storage.new_storage. 2020-05-24 12:01:57 +00:00
Eric Hennenfent 2c90ee07c9 Use CoverageRC, Make CodeCov Less Aggressive (#1705)
* Experimental coverage changes

Tells coverage.py to record coverage for individual test cases, and makes CodeCov tolerate a small drop in overall coverage percentage to account for nondeterministic gas tests.

* Use workspace

* Remove explicit concurrency type declaration

Appears to break use of subprocess in integration tests

* Eliminate dynamic context

* Make all CI respect rcfile

* Use environment variable
2020-05-19 14:58:31 -07:00
feliam c39f870f59 Fix plugin enable/disable magic (#1708)
* FIx enable/disable magic

* CC

* Test enable/disable

* Remove duplicated code
2020-05-19 14:56:53 -07:00
feliam c2b847a460 Add a warning when selected no methods for inclusion (#1707)
* Add a warning when selected no methods for inclusion

* CC
2020-05-19 14:05:47 -03:00
Eric Hennenfent 8e6c481ee9 Remove duplicated entries (#1709)
Github automatically parses the issue templates and adds them to the config file, so they don't need to be included here.
2020-05-19 08:42:44 -07:00
Eric Hennenfent 24161e4771 Blacken (#1711) 2020-05-18 16:49:08 -07:00
Eric KilmerandBrad Larsen 704007e0c3 Fix symbolic syscall arg concretization (#1697)
* Rewind cpu when ConcretizeArgument is raised in system call

* Remove unused ConcretizeSyscallArgument

* Add test for symbolic system call argument

* Roll back PC during handling of ConcretizeArgument

This accomplishes the same thing as before but now the movement is done
in the parent state instead of children states

* Statically link test executable

* Use simple checkpoint and rollback for PC

* Rework checkpoint and rollback in exception-handling

* Create rollback function in State

This is to make sure we don't miss anything when adding future values

* Define only one local variable for exception data

* Remove unused import

* Less verbosity in test

* Rollback in parent state instead of children states

* Always rollback state on Concretize*

* Use typing.NamedTuple

Thank you @bradlarsen

* Use local checkpoint variable

We don't access checkpoint data anywhere else aside from the `execute`
function

* Add type hint to test

Co-authored-by: Brad Larsen <[email protected]>

* Use more specific language in test comment

Co-authored-by: Brad Larsen <[email protected]>

* Remove outdated function name in comment

* Fix missed refactor

* Remove unneeded testing changes after refactor

Co-authored-by: Brad Larsen <[email protected]>
2020-05-18 11:14:34 -07:00
Samuel Moelius b3558feb22 Merge remote-tracking branch 'origin/master' into dev-connect-to-eth-node 2020-05-17 20:42:02 +00:00
Eric Hennenfent bf79b805ab Update README, Add Issue Templates (#1685)
* Add canned issue templates

* Fix URL params

* Update the README

* Add CLA

* Update Youtube URL

* Remove sudo from example readme

* Reword dependencies in main readme

* Replace mkvirtualenv with default version
2020-05-15 11:28:01 -07:00
Samuel Moelius 747ad691d7 Rename Storage.data to Storage._data. 2020-05-15 11:10:31 +00:00
Samuel Moelius c3ae87fbd1 Eliminate use of dirty. 2020-05-15 01:55:59 +00:00
Samuel Moelius 44e6c0a6b1 Do not store constraints in Storage. 2020-05-15 00:35:38 +00:00
feliam 55e2486f47 Fix inheritance magic and add plugin enable/disable (#1696)
* Fix inheritance magic nonsens and add plugin enable/disable

* CC

* Better Plugin default

* Fix enabled default

* Trying to generalize enable/disable for plugins

* Merger is the only plugin using locked context correctly

* Fix plugin context name

* text to enum
2020-05-13 10:44:58 -07:00
feliam 4f7027bf8d Add hashing to constraintSets (#1703)
* Add hashing to constraintSets

* CC

* fix bytearray related tests

* Change get_related default
2020-05-13 10:07:39 -07:00
Samuel E. Moelius 5a707f1bc8 Reduce log messages (#1700)
* Change concretization log message from info to debug.

* Deprioritize helper (e.g., serialization) log messages.
2020-05-12 13:15:22 -07:00
sschriner 7a5f0c7f07 Updated Proc error message to be more informative (#1704) 2020-05-12 14:56:28 -04:00
Samuel E. Moelius 4cccd4d66b Move states that selfdestruct to the ready queue. (#1699) 2020-05-12 11:28:24 -07:00