Commit Graph

2639 Commits

Author SHA1 Message Date
Alex Beregszaszi
679ff78714 Restrict parse/analyse in CompilerStack 2019-02-28 13:59:33 +00:00
chriseth
6aab3b1369
Merge pull request #6139 from ethereum/compilerstack-restrict
Restrict the state when settings can be altered in CompilerStack
2019-02-28 14:52:52 +01:00
Alex Beregszaszi
b04b86a938 Restrict the state when settings can be altered in CompilerStack 2019-02-28 12:55:36 +00:00
Mathias Baumann
f782125463 Fix SMT Checker crash due to missing type information 2019-02-28 11:55:45 +01:00
Mathias Baumann
e4a52aa2f6 Allow dynamic types in public mappings 2019-02-26 15:48:54 +01:00
Alex Beregszaszi
d2f493268b Provide access to the name of contracts. 2019-02-26 14:07:03 +00:00
chriseth
80417e3d8c
Merge pull request #6100 from ethereum/smt_dynamic_cast_types
[SMTChecker] Replace dynamic_cast by category check
2019-02-26 13:28:48 +01:00
chriseth
38fc740690
Merge pull request #6080 from ethereum/library-index-access
Disallow index access on contracts and libraries
2019-02-26 13:26:05 +01:00
Leonardo Alt
bbd2c91e19 [SMTChecker] Replace dynamic_cast by category check 2019-02-26 00:47:59 +01:00
Erik Kundt
2d0daae796 Disallows index access on contracts and libraries. 2019-02-25 23:05:33 +00:00
Alex Beregszaszi
358ccbe372 Properly issue unimplemented assertion on FixedPointType in type conversion 2019-02-25 21:21:33 +00:00
Leonardo Alt
2405b2151a EVMVersion in langutil namespace instead of solidity 2019-02-25 15:29:57 +01:00
chriseth
7f5b335b47 Make EVM version part of EVM dialect. 2019-02-21 21:59:46 +01:00
Alex Beregszaszi
fcf884f201 Do not ignore fatal error in AsmParser for inline assembly 2019-02-21 16:18:53 +00:00
Mathias Baumann
c65a96d189 Small documentation fixes in the code 2019-02-21 12:54:39 +01:00
chriseth
fb07462d82 Fix: Do use actual ABI signatures for events also in libraries instead of internal signature. 2019-02-20 14:35:24 +01:00
Alex Beregszaszi
52496ea719 Proper error message for missing variables in inline assembly 2019-02-20 10:36:55 +00:00
Mathias Baumann
a63f7ca9df Fix crash due to missing type info 2019-02-19 17:28:44 +01:00
chriseth
d9e4a10d5a
Merge pull request #6000 from ethereum/fixECRecoverABIV2
Fixed internal error related to ecrecover and ABIEncoderV2.
2019-02-19 14:36:08 +01:00
chriseth
874648b924
Merge pull request #5999 from ethereum/smt_lazy_overflow
[SMTChecker] Check for under/overflow in the end of the function
2019-02-19 14:28:55 +01:00
chriseth
05541e5adb Fixed internal error related to ecrecover and ABIEncoderV2. 2019-02-19 14:17:03 +01:00
chriseth
d5791fef41 Fix combination of delegatecall and ABIEncoderV2.
We can set the flag to false for bare delegatecall, because we always
send a memory string and never a storage reference.
2019-02-19 13:57:03 +01:00
chriseth
55c4131a03
Merge pull request #6030 from ethereum/fixABIEncoderV2Mapping
Allow cleanup for mappings (do nothing).
2019-02-19 13:56:21 +01:00
Leonardo Alt
34470f3549 [SMTChecker] Only check for overflow/underflow in the end of the function 2019-02-18 23:55:58 +01:00
Alex Beregszaszi
2949bd14dd
Merge pull request #6028 from ethereum/warn-about-unused-struct-array-expr
Detect custom type expressions that have no effect
2019-02-18 21:12:04 +00:00
Mathias Baumann
e3d4155fa8 Detect custom type expressions that have no effect 2019-02-18 18:59:31 +01:00
chriseth
c690f679cb Allow cleanup for mappings (do nothing). 2019-02-18 18:50:22 +01:00
Mathias Baumann
093b9ced97 Make sure "value" error hint is only displayed in the right context
Before, the hint would be shown for any "value" member, even a user-specified one.
2019-02-18 16:29:57 +01:00
Daniel Kirchner
d74198b3cc Remove misleading note in Type::calldataEncodedSize. 2019-02-18 16:18:40 +01:00
chriseth
cb0ad2266c
Merge pull request #6008 from ethereum/smt_fix_abstract_assignment
[SMTChecker] Assert type is not function when assigning
2019-02-18 14:54:20 +01:00
chriseth
db7b38e3c4
Merge pull request #5978 from ethereum/fix-broken-hint
Fix error msg hint for non-payable contracts
2019-02-18 11:49:07 +01:00
Daniel Kirchner
0408130338
Merge pull request #6003 from ethereum/moreStyleChecks
Even more style checks.
2019-02-15 11:52:32 +01:00
Leonardo Alt
22cdfb18d4 [SMTChecker] Assert type is not function when assigning 2019-02-14 13:32:56 +01:00
Daniel Kirchner
809b9a95f9 Even more style checks. 2019-02-14 11:53:00 +01:00
Daniel Kirchner
8ca6715e18 More style checks. 2019-02-14 11:41:20 +01:00
Mathias Baumann
223dac3eca TypeChecker: Use cast instead of category() check 2019-02-14 11:39:51 +01:00
Mathias Baumann
10a9960eb3 Fix error msg hint for non-payable contracts 2019-02-14 11:39:19 +01:00
Daniel Kirchner
32190dac48 Add stride helpers to ArrayType. 2019-02-14 10:51:39 +01:00
chriseth
f003696d7e
Merge pull request #5994 from ethereum/error-to-assert
Turn unreachable error into assert
2019-02-13 17:54:01 +01:00
chriseth
1a823f0bf8 Fix tabs/spaces. 2019-02-13 17:05:48 +01:00
Mathias Baumann
a70fee7316 Turn unreachable error into assert
The exact conditions are already checked when iterating over the
possibleMembers where the function `canTakeArguments()` is called
for each member. The function does the identical check.
2019-02-13 16:51:05 +01:00
chriseth
17ea467e5b Fix style of "const". 2019-02-13 16:34:53 +01:00
chriseth
d073eb1544 Move AssemblyStack to libyul. 2019-02-13 12:23:07 +01:00
chriseth
02373c2225 Adjust uses of AsmCodeGen. 2019-02-13 11:35:49 +01:00
chriseth
1ff6f2c71c Move AsmCodeGen. 2019-02-13 11:20:15 +01:00
Bhargava Shastry
7751fa740f Ensure we fail gracefully when user tries to optimize Yul code 2019-02-12 11:21:02 +01:00
Daniel Kirchner
9e32aa7510 Disallow calldata arrays with dynamically encoded base types in TypeChecker. 2019-02-11 17:13:12 +01:00
chriseth
92cb6cb793
Merge pull request #5936 from ethereum/calldataStructsV2
ABIEncoderV2: Implement calldata structs without dynamically encoded members.
2019-02-11 16:18:27 +01:00
chriseth
18c7ad08a0
Merge pull request #5925 from ethereum/stackCompressor
Stack compressor
2019-02-11 16:17:47 +01:00
chriseth
b34e104173 Make dialect a shared pointer. 2019-02-11 15:48:29 +01:00
Mathias Baumann
259d803387 Conditional Expression: Delay invalid type fatal error
Check the whole conditional first and then output errors for
both, the true and false expressions.
2019-02-11 15:47:19 +01:00
Daniel Kirchner
0e4912a203 ABIEncoderV2: Implement calldata structs without dynamically encoded members. 2019-02-11 15:46:58 +01:00
chriseth
b5a2c66771
Merge pull request #5957 from ethereum/function-param-fix
Ensure function parameter names always matches parameter types length
2019-02-11 15:45:28 +01:00
Mathias Baumann
66b24225fb Remove duplicate if-check 2019-02-11 14:56:57 +01:00
Mathias Baumann
fe2429de9f Packed Encoding: Disallow types in v2 that aren't allowed in v1 2019-02-11 11:37:48 +01:00
chriseth
a8d0ef4bad Allow indexed structs in events with encoder v2. 2019-02-11 11:37:47 +01:00
chriseth
0c2d623ee4 Enable struct encoding. 2019-02-11 11:37:47 +01:00
chriseth
a08f4f43fa Add packed encoder V2. 2019-02-11 11:37:47 +01:00
chriseth
1b9d30f05f Packed encoding. 2019-02-11 11:37:47 +01:00
Mathias Baumann
57c1c8b46c Ensure function parameter names always matches parameter types length 2019-02-11 10:57:57 +01:00
Leonardo Alt
4058978b3b Require Z3 >= 4.6.0 2019-02-07 14:24:40 +01:00
Leonardo Alt
637546850f [SMTChecker] Add mod operator 2019-02-07 14:24:40 +01:00
chriseth
9de652ab76
Merge pull request #5953 from ethereum/removeCheckCoveredByAssertion
Remove type check that is covered by assertions.
2019-02-07 12:19:14 +01:00
chriseth
fc18258250 Remove type check that is covered by assertions. 2019-02-07 12:02:15 +01:00
Mathias Baumann
5fb79f5e37 Turn unreachable error statements into asserts 2019-02-07 10:07:09 +01:00
chriseth
1236b23168
Merge pull request #5943 from ethereum/singleOutLengthUpdate
Extract storing length to its own function.
2019-02-06 14:46:39 +01:00
chriseth
49f8fa4cfe Extract storing length to its own function. 2019-02-06 14:03:49 +01:00
Mathias Baumann
9f431339ef Fix crash for too large struct array indicies 2019-02-06 11:50:25 +01:00
Mathias Baumann
77f407d450 Fix check that mappings can only have storage location 2019-02-05 18:06:42 +01:00
chriseth
77baf6caf7 Compilability checker. 2019-02-04 17:32:05 +01:00
chriseth
cd8cf7745b
Merge pull request #5888 from ethereum/betterStackErrorMessages
Better error message for out of stack in assembly.
2019-02-04 15:26:55 +01:00
Alex Beregszaszi
717727940d
Merge pull request #5909 from ethereum/c++17
Use specific boost include in DocStringParser
2019-01-31 13:55:27 +00:00
Alex Beregszaszi
021d30f036 Use specific boost include in DocStringParser
This is needed for C++17 support (at least on certain Boost and OS combinations)
2019-01-31 13:14:29 +00:00
chriseth
17a1e7aed5 Better error message for out of stack in assembly. 2019-01-30 12:24:10 +01:00
chriseth
35483422f3 Pad code to multiple of 32 bytes. 2019-01-30 11:31:28 +01:00
Leonardo Alt
9a33367bc6 [SMTChecker] Warn when no solver was found and there are unhandled queries. 2019-01-29 14:29:07 +01:00
Alex Beregszaszi
ee09d54525 Change FIXMEs into TODOs where appropriate 2019-01-29 00:35:23 +00:00
chriseth
e22a9ea5cf
Merge pull request #5883 from ethereum/fixInlineAssembly
Do not provide access to external assembly variables from within functions.
2019-01-28 15:12:43 +01:00
Alex Beregszaszi
9aafa32825 Disallow empty import statements 2019-01-28 13:52:15 +00:00
chriseth
64312584dc Do not provide access to external assembly variables from within functions. 2019-01-28 14:42:38 +01:00
chriseth
e3791d6dcf Fix reported packed encoded size for arrays and structs. 2019-01-23 11:13:22 +01:00
chriseth
ea292393a3
Merge pull request #5838 from maxsam4/useLiteralContent-patch
useLiteralContent data validation
2019-01-23 10:35:32 +01:00
Mudit Gupta
2f91781a80
useLiteralContent data validation
Squashed commit of the following:

commit bbceee6997c1b951eb6054f7d5b7560fe1773690
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 23:27:49 2019 +0530

    Removed extra check

commit 4f7c3cc58e94836b1dddcc5f2938da14adad6252
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:51:05 2019 +0530

    Updated test error message

commit 5da45f2a23840e7bb1978853e1c184faec65b3e0
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:46:09 2019 +0530

    Renamed test

commit e661418deac25f31c49091be3c80244f566fc14c
Author: Leonardo <leo@ethereum.org>
Date:   Tue Jan 22 17:41:56 2019 +0530

    Update libsolidity/interface/StandardCompiler.cpp

    Co-Authored-By: maxsam4 <guptamudit@ymail.com>

commit d289b4dc1956ab736aada613e810cf2e2d124d4d
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:29:40 2019 +0530

    changed style

commit 5a7cf08db3027d75081d2e698dd51b807bef5abb
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:20:37 2019 +0530

    Added test case for missing useLiteralContent

commit 6e866c46aa92d6a89f2b341bd717c3886946f3ff
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:09:30 2019 +0530

    input check for useLiteralContent
2019-01-23 10:22:27 +05:30
chriseth
628d665474
Merge pull request #5843 from ethereum/abi-typos
Do not ignore revertOnFailure flag when validating Address/Contract
2019-01-22 18:44:09 +01:00
Alex Beregszaszi
3f2898ea47 Do not ignore revertOnFailure flag when validating Address/Contract 2019-01-22 14:45:08 +00:00
chriseth
01e87cfc08 Refactor struct encoder. 2019-01-22 14:45:25 +01:00
chriseth
7b66eb273d
Merge pull request #5832 from ethereum/introduceEncodingOptions
[REF] Provide ABI encoding options as single struct parameter.
2019-01-21 23:53:21 +01:00
chriseth
7a69455c13 Provide ABI encoding options as single struct parameter. 2019-01-21 16:43:32 +01:00
Leonardo Alt
7f8ceaadab [SMTChecker] Clear state knowledge after external function calls 2019-01-21 12:58:40 +01:00
chriseth
f8e9aed839
Merge pull request #5717 from ethereum/smt_typecast
[SMTChecker] Support basic typecast without truncation
2019-01-21 12:35:07 +01:00
Daniel Kirchner
610ef9f199 Disallow calldata structs. 2019-01-21 10:30:57 +01:00
Alex Beregszaszi
7b759866cb
Merge pull request #5817 from ethereum/refactoring
Refactoring in TypeChecker and ContractDefinition
2019-01-18 11:36:49 +00:00
Daniel Kirchner
b7a86a124d Refactor TypeChecker::visit(FunctionDefinition const&). 2019-01-18 12:12:23 +01:00
Daniel Kirchner
a766efc79f Add ContractDefinition::isInterface. 2019-01-18 12:11:35 +01:00
chriseth
2ec997e697
Merge pull request #5775 from ethereum/codeAccess
Provide access to code of contract types.
2019-01-18 00:16:06 +01:00
chriseth
29f6aa7d56 Do not create a copy of the assembly. 2019-01-17 20:36:48 +01:00
chriseth
a9fa2658d8 Add helper to show if contract can be deployed. 2019-01-17 20:36:48 +01:00
chriseth
4669b06ab4 Warn if type(..).runtimeCode is used with assembly in the constructor. 2019-01-17 20:36:48 +01:00
chriseth
0bfdaa500a Add code access dependency. 2019-01-17 20:36:48 +01:00
chriseth
e6fee257e6 Code generation for access to contract code. 2019-01-17 20:36:48 +01:00