diff --git a/evm-testcases/taint/testTimestampDependency/example18/example19.sol b/evm-testcases/taint/testTimestampDependency/example18/example19.sol new file mode 100644 index 000000000..988e1ca26 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example18/example19.sol @@ -0,0 +1,6 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +TIMESTAMP +MCOPY +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example18/report.json b/evm-testcases/taint/testTimestampDependency/example18/report.json new file mode 100644 index 000000000..04198b423 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example18/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTimestampDependency_example18_example19.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "25ms", + "end" : "2025-02-28T16:42:43.604+01:00", + "expressions" : "4", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T16:42:43.579+01:00", + "statements" : "6", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTimestampDependency/example18" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example18/untyped_program.evm-testcases_taint_testTimestampDependency_example18_example19.sol().json b/evm-testcases/taint/testTimestampDependency/example18/untyped_program.evm-testcases_taint_testTimestampDependency_example18_example19.sol().json new file mode 100644 index 000000000..03b956405 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example18/untyped_program.evm-testcases_taint_testTimestampDependency_example18_example19.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTimestampDependency/example18/example19.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"TIMESTAMP"},{"id":7,"text":"MCOPY"},{"id":8,"subNodes":[9],"text":"PUSH1 0x10"},{"id":9,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":8,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["timestamp 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":7,"description":{"expressions":["mcopy 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":8,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":9,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example19/example20.sol b/evm-testcases/taint/testTimestampDependency/example19/example20.sol new file mode 100644 index 000000000..377bb25cc --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example19/example20.sol @@ -0,0 +1,8 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +TSTORE +PUSH1 0x30 +TIMESTAMP +TSTORE +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example19/report.json b/evm-testcases/taint/testTimestampDependency/example19/report.json new file mode 100644 index 000000000..f6d2a3b88 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example19/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTimestampDependency_example19_example20.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "27ms", + "end" : "2025-02-28T16:42:43.654+01:00", + "expressions" : "5", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T16:42:43.627+01:00", + "statements" : "8", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTimestampDependency/example19" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example19/untyped_program.evm-testcases_taint_testTimestampDependency_example19_example20.sol().json b/evm-testcases/taint/testTimestampDependency/example19/untyped_program.evm-testcases_taint_testTimestampDependency_example19_example20.sol().json new file mode 100644 index 000000000..458fecb57 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example19/untyped_program.evm-testcases_taint_testTimestampDependency_example19_example20.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTimestampDependency/example19/example20.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"TSTORE"},{"id":7,"subNodes":[8],"text":"PUSH1 0x30"},{"id":8,"text":"0x30"},{"id":9,"text":"TIMESTAMP"},{"id":10,"text":"TSTORE"},{"id":11,"subNodes":[12],"text":"PUSH1 0x10"},{"id":12,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":9,"kind":"SequentialEdge"},{"sourceId":9,"destId":10,"kind":"SequentialEdge"},{"sourceId":10,"destId":11,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["tstore 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":7,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":9,"description":{"expressions":["timestamp 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, T]"}}},{"nodeId":10,"description":{"expressions":["tstore 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":11,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":12,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example20/example21.sol b/evm-testcases/taint/testTimestampDependency/example20/example21.sol new file mode 100644 index 000000000..f17373dd1 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example20/example21.sol @@ -0,0 +1,8 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +TLOAD +PUSH1 0x30 +ORIGIN +TLOAD +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example20/report.json b/evm-testcases/taint/testTimestampDependency/example20/report.json new file mode 100644 index 000000000..99b8d154c --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example20/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTimestampDependency_example20_example21.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "467ms", + "end" : "2025-02-28T17:18:54.097+01:00", + "expressions" : "5", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T17:18:53.630+01:00", + "statements" : "8", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTimestampDependency/example20" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example20/untyped_program.evm-testcases_taint_testTimestampDependency_example20_example21.sol().json b/evm-testcases/taint/testTimestampDependency/example20/untyped_program.evm-testcases_taint_testTimestampDependency_example20_example21.sol().json new file mode 100644 index 000000000..b422ab92c --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example20/untyped_program.evm-testcases_taint_testTimestampDependency_example20_example21.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTimestampDependency/example20/example21.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"TLOAD"},{"id":7,"subNodes":[8],"text":"PUSH1 0x30"},{"id":8,"text":"0x30"},{"id":9,"text":"ORIGIN"},{"id":10,"text":"TLOAD"},{"id":11,"subNodes":[12],"text":"PUSH1 0x10"},{"id":12,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":9,"kind":"SequentialEdge"},{"sourceId":9,"destId":10,"kind":"SequentialEdge"},{"sourceId":10,"destId":11,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["tload 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#]"}}},{"nodeId":7,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#]"}}},{"nodeId":9,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, C]"}}},{"nodeId":10,"description":{"expressions":["tload 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#]"}}},{"nodeId":11,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#, C]"}}},{"nodeId":12,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example21/example22.sol b/evm-testcases/taint/testTimestampDependency/example21/example22.sol new file mode 100644 index 000000000..47928f2bd --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example21/example22.sol @@ -0,0 +1,8 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x20 +BLOBHASH +PUSH1 0x20 +TIMESTAMP +BLOBHASH +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example21/report.json b/evm-testcases/taint/testTimestampDependency/example21/report.json new file mode 100644 index 000000000..a88141f47 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example21/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTimestampDependency_example21_example22.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "616ms", + "end" : "2025-03-02T11:46:17.990+01:00", + "expressions" : "5", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-03-02T11:46:17.374+01:00", + "statements" : "8", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTimestampDependency/example21" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example21/untyped_program.evm-testcases_taint_testTimestampDependency_example21_example22.sol().json b/evm-testcases/taint/testTimestampDependency/example21/untyped_program.evm-testcases_taint_testTimestampDependency_example21_example22.sol().json new file mode 100644 index 000000000..257d6010b --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example21/untyped_program.evm-testcases_taint_testTimestampDependency_example21_example22.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTimestampDependency/example21/example22.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x20"},{"id":5,"text":"0x20"},{"id":6,"text":"BLOBHASH"},{"id":7,"subNodes":[8],"text":"PUSH1 0x20"},{"id":8,"text":"0x20"},{"id":9,"text":"TIMESTAMP"},{"id":10,"text":"BLOBHASH"},{"id":11,"subNodes":[12],"text":"PUSH1 0x10"},{"id":12,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":9,"kind":"SequentialEdge"},{"sourceId":9,"destId":10,"kind":"SequentialEdge"},{"sourceId":10,"destId":11,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["blobhash 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":7,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":9,"description":{"expressions":["timestamp 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, C, T]"}}},{"nodeId":10,"description":{"expressions":["blobhash 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, C, T]"}}},{"nodeId":11,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, C, T, C]"}}},{"nodeId":12,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, C, T]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example22/example23.sol b/evm-testcases/taint/testTimestampDependency/example22/example23.sol new file mode 100644 index 000000000..90f9eac61 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example22/example23.sol @@ -0,0 +1,6 @@ +PUSH1 0x10 +PUSH1 0x20 +BLOBBASEFEE +TIMESTAMP +BLOBBASEFEE +PUSH1 0x20 \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example22/report.json b/evm-testcases/taint/testTimestampDependency/example22/report.json new file mode 100644 index 000000000..9ea8c5af5 --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example22/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTimestampDependency_example22_example23.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "15ms", + "end" : "2025-03-02T11:45:09.285+01:00", + "expressions" : "3", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-03-02T11:45:09.270+01:00", + "statements" : "6", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTimestampDependency/example22" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTimestampDependency/example22/untyped_program.evm-testcases_taint_testTimestampDependency_example22_example23.sol().json b/evm-testcases/taint/testTimestampDependency/example22/untyped_program.evm-testcases_taint_testTimestampDependency_example22_example23.sol().json new file mode 100644 index 000000000..d1cba91ec --- /dev/null +++ b/evm-testcases/taint/testTimestampDependency/example22/untyped_program.evm-testcases_taint_testTimestampDependency_example22_example23.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTimestampDependency/example22/example23.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"text":"BLOBBASEFEE"},{"id":5,"text":"TIMESTAMP"},{"id":6,"text":"BLOBBASEFEE"},{"id":7,"subNodes":[8],"text":"PUSH1 0x20"},{"id":8,"text":"0x20"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":5,"kind":"SequentialEdge"},{"sourceId":5,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["blobbasefee 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["timestamp 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":6,"description":{"expressions":["blobbasefee 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C]"}}},{"nodeId":7,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example13/example14.sol b/evm-testcases/taint/testTxOrigin/example13/example14.sol new file mode 100644 index 000000000..7a1f52747 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example13/example14.sol @@ -0,0 +1,6 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +ORIGIN +MCOPY +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example13/report.json b/evm-testcases/taint/testTxOrigin/example13/report.json new file mode 100644 index 000000000..6bbc02364 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example13/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTxOrigin_example13_example14.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "24ms", + "end" : "2025-02-28T16:49:31.225+01:00", + "expressions" : "4", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T16:49:31.201+01:00", + "statements" : "6", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTxOrigin/example13" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example13/untyped_program.evm-testcases_taint_testTxOrigin_example13_example14.sol().json b/evm-testcases/taint/testTxOrigin/example13/untyped_program.evm-testcases_taint_testTxOrigin_example13_example14.sol().json new file mode 100644 index 000000000..d40b2baaa --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example13/untyped_program.evm-testcases_taint_testTxOrigin_example13_example14.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTxOrigin/example13/example14.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"ORIGIN"},{"id":7,"text":"MCOPY"},{"id":8,"subNodes":[9],"text":"PUSH1 0x10"},{"id":9,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":8,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":7,"description":{"expressions":["mcopy 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":8,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":9,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example14/example15.sol b/evm-testcases/taint/testTxOrigin/example14/example15.sol new file mode 100644 index 000000000..101e6e469 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example14/example15.sol @@ -0,0 +1,8 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +TSTORE +PUSH1 0x30 +ORIGIN +TSTORE +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example14/report.json b/evm-testcases/taint/testTxOrigin/example14/report.json new file mode 100644 index 000000000..fb367f256 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example14/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTxOrigin_example14_example15.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "30ms", + "end" : "2025-02-28T16:49:31.274+01:00", + "expressions" : "5", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T16:49:31.244+01:00", + "statements" : "8", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTxOrigin/example14" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example14/untyped_program.evm-testcases_taint_testTxOrigin_example14_example15.sol().json b/evm-testcases/taint/testTxOrigin/example14/untyped_program.evm-testcases_taint_testTxOrigin_example14_example15.sol().json new file mode 100644 index 000000000..0a17a4ec7 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example14/untyped_program.evm-testcases_taint_testTxOrigin_example14_example15.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTxOrigin/example14/example15.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"TSTORE"},{"id":7,"subNodes":[8],"text":"PUSH1 0x30"},{"id":8,"text":"0x30"},{"id":9,"text":"ORIGIN"},{"id":10,"text":"TSTORE"},{"id":11,"subNodes":[12],"text":"PUSH1 0x10"},{"id":12,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":9,"kind":"SequentialEdge"},{"sourceId":9,"destId":10,"kind":"SequentialEdge"},{"sourceId":10,"destId":11,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["tstore 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":7,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":9,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, T]"}}},{"nodeId":10,"description":{"expressions":["tstore 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":11,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":12,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example15/example16.sol b/evm-testcases/taint/testTxOrigin/example15/example16.sol new file mode 100644 index 000000000..f17373dd1 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example15/example16.sol @@ -0,0 +1,8 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x30 +TLOAD +PUSH1 0x30 +ORIGIN +TLOAD +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example15/report.json b/evm-testcases/taint/testTxOrigin/example15/report.json new file mode 100644 index 000000000..81b2ee105 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example15/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTxOrigin_example15_example16.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "27ms", + "end" : "2025-02-28T16:49:31.314+01:00", + "expressions" : "5", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-02-28T16:49:31.287+01:00", + "statements" : "8", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTxOrigin/example15" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example15/untyped_program.evm-testcases_taint_testTxOrigin_example15_example16.sol().json b/evm-testcases/taint/testTxOrigin/example15/untyped_program.evm-testcases_taint_testTxOrigin_example15_example16.sol().json new file mode 100644 index 000000000..f0aed998c --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example15/untyped_program.evm-testcases_taint_testTxOrigin_example15_example16.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTxOrigin/example15/example16.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x30"},{"id":5,"text":"0x30"},{"id":6,"text":"TLOAD"},{"id":7,"subNodes":[8],"text":"PUSH1 0x30"},{"id":8,"text":"0x30"},{"id":9,"text":"ORIGIN"},{"id":10,"text":"TLOAD"},{"id":11,"subNodes":[12],"text":"PUSH1 0x10"},{"id":12,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":9,"kind":"SequentialEdge"},{"sourceId":9,"destId":10,"kind":"SequentialEdge"},{"sourceId":10,"destId":11,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["tload 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#]"}}},{"nodeId":7,"description":{"expressions":["push \"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x30\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#]"}}},{"nodeId":9,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, T]"}}},{"nodeId":10,"description":{"expressions":["tload 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#]"}}},{"nodeId":11,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#, C]"}}},{"nodeId":12,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, #TOP#, C, #TOP#]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example16/example17.sol b/evm-testcases/taint/testTxOrigin/example16/example17.sol new file mode 100644 index 000000000..caec48cac --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example16/example17.sol @@ -0,0 +1,7 @@ +PUSH1 0x10 +PUSH1 0x20 +PUSH1 0x20 +BLOBHASH +ORIGIN +BLOBHASH +PUSH1 0x10 \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example16/report.json b/evm-testcases/taint/testTxOrigin/example16/report.json new file mode 100644 index 000000000..6007d3ca3 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example16/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTxOrigin_example16_example17.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "583ms", + "end" : "2025-03-02T11:53:27.239+01:00", + "expressions" : "4", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-03-02T11:53:26.656+01:00", + "statements" : "7", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTxOrigin/example16" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example16/untyped_program.evm-testcases_taint_testTxOrigin_example16_example17.sol().json b/evm-testcases/taint/testTxOrigin/example16/untyped_program.evm-testcases_taint_testTxOrigin_example16_example17.sol().json new file mode 100644 index 000000000..5934018a3 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example16/untyped_program.evm-testcases_taint_testTxOrigin_example16_example17.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTxOrigin/example16/example17.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"subNodes":[5],"text":"PUSH1 0x20"},{"id":5,"text":"0x20"},{"id":6,"text":"BLOBHASH"},{"id":7,"text":"ORIGIN"},{"id":8,"text":"BLOBHASH"},{"id":9,"subNodes":[10],"text":"PUSH1 0x10"},{"id":10,"text":"0x10"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"},{"sourceId":7,"destId":8,"kind":"SequentialEdge"},{"sourceId":8,"destId":9,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":6,"description":{"expressions":["blobhash 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":7,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":8,"description":{"expressions":["blobhash 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":9,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C]"}}},{"nodeId":10,"description":{"expressions":["\"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}}]} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example17/example18.sol b/evm-testcases/taint/testTxOrigin/example17/example18.sol new file mode 100644 index 000000000..4d423a442 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example17/example18.sol @@ -0,0 +1,6 @@ +PUSH1 0x10 +PUSH1 0x20 +BLOBBASEFEE +ORIGIN +BLOBBASEFEE +PUSH1 0x20 \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example17/report.json b/evm-testcases/taint/testTxOrigin/example17/report.json new file mode 100644 index 000000000..43d001aab --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example17/report.json @@ -0,0 +1,38 @@ +{ + "warnings" : [ ], + "files" : [ "report.json", "untyped_program.evm-testcases_taint_testTxOrigin_example17_example18.sol().json" ], + "info" : { + "cfgs" : "1", + "duration" : "674ms", + "end" : "2025-03-02T11:53:34.382+01:00", + "expressions" : "3", + "files" : "1", + "globals" : "0", + "members" : "1", + "programs" : "1", + "start" : "2025-03-02T11:53:33.708+01:00", + "statements" : "6", + "units" : "0", + "version" : "0.1", + "warnings" : "0" + }, + "configuration" : { + "analysisGraphs" : "NONE", + "descendingPhaseType" : "NONE", + "dumpForcesUnwinding" : "false", + "fixpointWorkingSet" : "DuplicateFreeFIFOWorkingSet", + "glbThreshold" : "5", + "hotspots" : "unset", + "jsonOutput" : "true", + "openCallPolicy" : "WorstCasePolicy", + "optimize" : "false", + "recursionWideningThreshold" : "5", + "semanticChecks" : "", + "serializeInputs" : "false", + "serializeResults" : "true", + "syntacticChecks" : "", + "useWideningPoints" : "false", + "wideningThreshold" : "5", + "workdir" : "evm-outputs/taint/testTxOrigin/example17" + } +} \ No newline at end of file diff --git a/evm-testcases/taint/testTxOrigin/example17/untyped_program.evm-testcases_taint_testTxOrigin_example17_example18.sol().json b/evm-testcases/taint/testTxOrigin/example17/untyped_program.evm-testcases_taint_testTxOrigin_example17_example18.sol().json new file mode 100644 index 000000000..d33782cb9 --- /dev/null +++ b/evm-testcases/taint/testTxOrigin/example17/untyped_program.evm-testcases_taint_testTxOrigin_example17_example18.sol().json @@ -0,0 +1 @@ +{"name":"untyped program::evm-testcases/taint/testTxOrigin/example17/example18.sol()","description":null,"nodes":[{"id":0,"subNodes":[1],"text":"PUSH1 0x10"},{"id":1,"text":"0x10"},{"id":2,"subNodes":[3],"text":"PUSH1 0x20"},{"id":3,"text":"0x20"},{"id":4,"text":"BLOBBASEFEE"},{"id":5,"text":"ORIGIN"},{"id":6,"text":"BLOBBASEFEE"},{"id":7,"subNodes":[8],"text":"PUSH1 0x20"},{"id":8,"text":"0x20"}],"edges":[{"sourceId":0,"destId":2,"kind":"SequentialEdge"},{"sourceId":2,"destId":4,"kind":"SequentialEdge"},{"sourceId":4,"destId":5,"kind":"SequentialEdge"},{"sourceId":5,"destId":6,"kind":"SequentialEdge"},{"sourceId":6,"destId":7,"kind":"SequentialEdge"}],"descriptions":[{"nodeId":0,"description":{"expressions":["push \"0x10\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":1,"description":{"expressions":["\"0x10\""],"state":"#TOP#"}},{"nodeId":2,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C]"}}},{"nodeId":3,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C]"}}},{"nodeId":4,"description":{"expressions":["blobbasefee 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C]"}}},{"nodeId":5,"description":{"expressions":["origin 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T]"}}},{"nodeId":6,"description":{"expressions":["blobbasefee 1"],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C]"}}},{"nodeId":7,"description":{"expressions":["push \"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C, C]"}}},{"nodeId":8,"description":{"expressions":["\"0x20\""],"state":{"heap":"monolith","type":"#TOP#","value":"[_|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, _|_, C, C, C, T, C]"}}}]} \ No newline at end of file diff --git a/src/main/java/it/unipr/analysis/taint/TaintAbstractDomain.java b/src/main/java/it/unipr/analysis/taint/TaintAbstractDomain.java index 73b6e9763..a573cd02b 100644 --- a/src/main/java/it/unipr/analysis/taint/TaintAbstractDomain.java +++ b/src/main/java/it/unipr/analysis/taint/TaintAbstractDomain.java @@ -90,7 +90,7 @@ public TaintAbstractDomain smallStepSemantics(ValueExpression expression, Progra case "PcOperator": case "GasOperator": case "MsizeOperator": - case "BlobBaseFee": + case "BlobBaseFeeOperator": case "BasefeeOperator": case "CalldatasizeOperator": case "CallvalueOperator": @@ -146,7 +146,7 @@ public TaintAbstractDomain smallStepSemantics(ValueExpression expression, Progra return resultStack; } - case "BlobhashOperator": + case "BlobHashOperator": case "BalanceOperator": case "BlockhashOperator": case "NotOperator": diff --git a/src/test/java/it/unipr/analysis/cron/semantics/TimestampDependencyAbstractSemanticsTest.java b/src/test/java/it/unipr/analysis/cron/semantics/TimestampDependencyAbstractSemanticsTest.java index bb4540ce8..c9eae4b12 100644 --- a/src/test/java/it/unipr/analysis/cron/semantics/TimestampDependencyAbstractSemanticsTest.java +++ b/src/test/java/it/unipr/analysis/cron/semantics/TimestampDependencyAbstractSemanticsTest.java @@ -177,4 +177,40 @@ public void testTimestampDependency17() throws AnalysisSetupException, IOExcepti false); perform(conf); } + + @Test + public void testTimestampDependency18() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTimestampDependency", "example18", "example19.sol", + false); + perform(conf); + } + + @Test + public void testTimestampDependency19() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTimestampDependency", "example19", "example20.sol", + false); + perform(conf); + } + + @Test + public void testTimestampDependency20() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTimestampDependency", "example20", "example21.sol", + false); + perform(conf); + } + + @Test + public void testTimestampDependency21() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTimestampDependency", "example21", "example22.sol", + false); + perform(conf); + } + + @Test + public void testTimestampDependency22() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTimestampDependency", "example22", "example23.sol", + false); + perform(conf); + } + } \ No newline at end of file diff --git a/src/test/java/it/unipr/analysis/cron/semantics/TxOriginAbstractSemanticsTest.java b/src/test/java/it/unipr/analysis/cron/semantics/TxOriginAbstractSemanticsTest.java index 3eea780b1..53dd8d9e4 100644 --- a/src/test/java/it/unipr/analysis/cron/semantics/TxOriginAbstractSemanticsTest.java +++ b/src/test/java/it/unipr/analysis/cron/semantics/TxOriginAbstractSemanticsTest.java @@ -131,4 +131,34 @@ public void testTxOrigin12() throws AnalysisSetupException, IOException { CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example12", "example15.sol", false); perform(conf); } + + @Test + public void testTxOrigin13() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example13", "example14.sol", false); + perform(conf); + } + + @Test + public void testTxOrigin14() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example14", "example15.sol", false); + perform(conf); + } + + @Test + public void testTxOrigin15() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example15", "example16.sol", false); + perform(conf); + } + + @Test + public void testTxOrigin16() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example16", "example17.sol", false); + perform(conf); + } + + @Test + public void testTxOrigin17() throws AnalysisSetupException, IOException { + CronConfiguration conf = createConfiguration("taint/testTxOrigin", "example17", "example18.sol", false); + perform(conf); + } } \ No newline at end of file