Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Constraint to Disallow Division by Zero #102

Closed
ChristianMoesl opened this issue Dec 9, 2020 · 1 comment
Closed

Add Constraint to Disallow Division by Zero #102

ChristianMoesl opened this issue Dec 9, 2020 · 1 comment
Assignees
Labels
bug Something isn't working released

Comments

@ChristianMoesl
Copy link
Collaborator

ChristianMoesl commented Dec 9, 2020

At least for QF_BV , they basically just fully define unsigned bit-vector division. The result of a division by zero is a bit-vector with all bits set to one (max unsigned value).
This implies, that we have to add an extra constraint for every division we have in the code, to ensure that we do not get an assignment, where a divisor is 0.

@ChristianMoesl ChristianMoesl added the bug Something isn't working label Dec 9, 2020
@ChristianMoesl ChristianMoesl self-assigned this Dec 9, 2020
github-actions bot pushed a commit that referenced this issue Jan 20, 2021
# [0.1.0](v0.0.1...v0.1.0) (2021-01-20)

### Bug Fixes

* BEQ for concrete conditions does not create a constrain ([#44](#44)) ([#45](#45)) ([8ca6ec9](8ca6ec9))
* beq/jal edges ([870bf6e](870bf6e))
* bug in z3 interface where wrong symbolic constants are used ([0fd3de6](0fd3de6))
* CFG computation for loops ([#57](#57)) ([80b8859](80b8859))
* command line parsing ([#37](#37)) ([d20c954](d20c954))
* constraints are now properly displayed in data-flow graphs ([9fa61d0](9fa61d0))
* data segment loading ([#54](#54)) ([4ec4f1d](4ec4f1d))
* dead code elimination now working properly for data-flow graphs ([114e75d](114e75d))
* divu now properly implemented ([#105](#105)) ([b4ee0aa](b4ee0aa))
* fixing divu exit point collection for candidate path generation ([c531663](c531663))
* fold all constants in SMT query ([#100](#100)) ([#101](#101)) ([a2dfc0a](a2dfc0a)), closes [#102](#102) [#103](#103) [#102](#102)
* implemented fix for exit ecall edge ([4cfb9e0](4cfb9e0))
* minor mistakes ([#26](#26)) ([a8e6fbc](a8e6fbc))
* operand side edges ([#70](#70)) ([c7b9c00](c7b9c00))
* recursion support for shortest path heursitic ([#69](#69)) ([#76](#76)) ([914f24e](914f24e))
* small mistakes fixed ([83b637d](83b637d))
* use ugt SMT-lib operator for SLTU ([94213cd](94213cd))

### Features

* ability to print SMT-lib format ([c8c6898](c8c6898))
* add "execution depth" as abort criteria ([#90](#90)) ([4b4829d](4b4829d))
* add banch decisions to test DFG generation with BEQ constrains ([f5e96e2](f5e96e2))
* add candidate path algorithm and generation of a formula graph (WIP) ([83cf753](83cf753))
* add CLI argument for CFG ([0a5493b](0a5493b))
* add CLI option for symbolic execution ([#43](#43)) ([#48](#48)) ([ce3f6fe](ce3f6fe))
* add CLI option to configure memory size of executor ([f30f4f7](f30f4f7))
* add command line argument parsing ([7f21061](7f21061))
* add smt generation and solving ([#38](#38)) ([fab1457](fab1457)), closes [#16](#16)
* add support for division by zero and memory access errors ([#77](#77)) ([#79](#79)) ([e7dc16f](e7dc16f))
* add Z3 SMT solver support ([#68](#68)) ([af9ef1b](af9ef1b))
* basic facilities for candidate path generation ([64a9fe8](64a9fe8))
* candidate path generation (Needs testing) ([43723a2](43723a2))
* compute edges for BEQ instruction ([6ff5ebc](6ff5ebc))
* dead code elimination updated ([97caddd](97caddd))
* eagerly evaluate PC in BEQ instructions ([0ef582c](0ef582c))
* first attempt to build a CFG and enabled formatter/linter ([a09a934](a09a934))
* functions for finding candidate path root nodes (WIP) ([9fd31ab](9fd31ab))
* generate all candidate paths for a given binary ([#7](#7)) ([#46](#46)) ([c00b605](c00b605))
* generate dataflow graph from RISC-U path and add Selfie as compiler ([5f36c4d](5f36c4d))
* implement bit vector remainder operand in monster solver ([#107](#107)) ([5cb4f26](5cb4f26))
* implement dataflow graph generation (WIP) ([5078ccd](5078ccd))
* implement DIVU in Monster solver and tests ([#72](#72)) ([c8f9d3d](c8f9d3d))
* implement Propagation Based Local Search for simple Formula ([#25](#25)) ([396fbbe](396fbbe))
* implement shortest path heuristic for path exploration ([#60](#60)) ([#61](#61)) ([453a615](453a615))
* implement SLTU in Monster solver ([#58](#58)) ([#73](#73)) ([bf7f8f7](bf7f8f7))
* implement SUB in the native solver ([#62](#62)) ([#63](#63)) ([8ccfd5d](8ccfd5d))
* implemented sltu in boolector and z3 ([#75](#75)) ([#80](#80)) ([af5b364](af5b364))
* implemented timeout correctly ([#74](#74)) ([#97](#97)) ([867a240](867a240))
* improve command line argument parsing and handling ([a50c59d](a50c59d))
* improve terminal output by using a logging library ([#66](#66)) ([#67](#67)) ([465e35c](465e35c))
* naive implementation of a RISC-U disassembler ([db125f6](db125f6))
* prototypical implementation to load ELF object files ([4caf390](4caf390))
* reduce executed candidate paths ([#55](#55)) ([#64](#64)) ([31420ed](31420ed))
* remove log header on default terminal output ([#94](#94)) ([92cce66](92cce66))
* some stubs for (ternary) bit vectors ([#9](#9)) ([b89220d](b89220d))
* started working on dead code elimination (WIP) ([a81708c](a81708c))
* stubs for dataflow graph ([11aa224](11aa224))
@github-actions
Copy link

🎉 This issue has been resolved in version 0.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working released
Projects
None yet
Development

No branches or pull requests

1 participant