eth-sri / securify2

Securify v2.0
Apache License 2.0
579 stars 133 forks source link

Error building dockerfile using solc 0.7.4 #19

Open 0xKurt opened 3 years ago

0xKurt commented 3 years ago

in Dockerfile:

ARG SOLC=0.7.4

Error message:

Step 18/21 : RUN cd /sec/securify/staticanalysis/souffle_analysis &&         souffle --dl-program=../dl-program         --fact-dir=/sec/securify/staticanalysis/facts_in         --output-dir=/sec/securify/staticanalysis/facts_out         -L../libfunctors -w analysis.dl
 ---> Running in 9adeb4f73d41
Removing intermediate container 9adeb4f73d41
 ---> 8bcefeb788a6
Step 19/21 : ENV LD_LIBRARY_PATH /sec/securify/staticanalysis/libfunctors
 ---> Running in c6387ab83f6d
Removing intermediate container c6387ab83f6d
 ---> b3ccbab49d2b
Step 20/21 : RUN cd /sec/securify/ && securify staticanalysis/testContract.sol
 ---> Running in e8843cf8adfd
pragma directive defines a prior version to 0.7.4. Changing pragma version to 0.7.4....
Traceback (most recent call last):
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_iterative.py", line 53, in evaluate
    result = super()._execute_rule(rule, arguments)
  File "/sec/securify/grammar/attributes/evaluators/evaluator_base.py", line 42, in _execute_rule
    return rule.func(**{name: node for name, node in arguments.items()})
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2295, in expression_value
    declaration = self.resolve()
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2287, in resolve
    return self.resolve_reference(self.referenced_declaration)
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 46, in resolve_reference
    return self.root().ast_nodes_by_id().get(node_id, None)
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 161, in ast_nodes_by_id
    return {d.id: d for d in self.descendants() if d is not None}
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 161, in <dictcomp>
    return {d.id: d for d in self.descendants() if d is not None}
  File "/sec/securify/grammar/__init__.py", line 313, in descendants
    yield from ProductionOps.descendants(child)
  File "/sec/securify/grammar/__init__.py", line 313, in descendants
    yield from ProductionOps.descendants(child)
  File "/sec/securify/grammar/__init__.py", line 309, in descendants
    for child in ProductionOps.children(self):
  File "/sec/securify/grammar/__init__.py", line 300, in children
    child = getattr(self, name)
AttributeError: 'VariableDeclaration__AllAttrsMixin' object has no attribute 'value'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/securify", line 11, in <module>
    load_entry_point('securify==0.0.1', 'console_scripts', 'securify')()
  File "/sec/securify/__main__.py", line 277, in main
    matches.extend(pattern.find_matches())
  File "/sec/securify/analyses/patterns/static/static_analysis_patterns.py", line 73, in find_matches
    static = analysis_context.static_analysis
  File "/sec/securify/analyses/analysis.py", line 88, in static_analysis
    self._static = self.config.static_analysis(self)
  File "/sec/securify/__main__.py", line 255, in <lambda>
    static_analysis=lambda t: static_analysis.analyze_cfg(t.cfg, **souffle_config),
  File "/sec/securify/analyses/analysis.py", line 81, in cfg
    self._cfg = self.config.cfg_compiler(self)
  File "/sec/securify/__main__.py", line 254, in <lambda>
    cfg_compiler=lambda t: solidity_cfg_compiler.compile_cfg(t.ast).cfg,
  File "/sec/securify/solidity/solidity_cfg_compiler.py", line 88, in compile_cfg
    cfg = ast_attr.cfg
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_base.py", line 84, in __get__
    return self.__evaluator.evaluate(instance, self.__name)
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_iterative.py", line 57, in evaluate
    f"Rule trace: {self.__rule_trace(dependency_path)}") from e
securify.grammar.attributes.AttributeGrammarError: Error during evaluation of rule 'expression_value'. 
Rule trace: 
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 199)
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 272)
    PushdownRule next_cfgs_unlinked (ImplicitPushdown)
    PushdownRule push_cfgs (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 163)
    SynthesizeRule contract_cfg_unlinked (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 258)
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 529)
    SynthesizeRule cfg_unmodified (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 507)
    SynthesizeRule cfg_body (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 500)
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 869)
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 1520)
    SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2013)
    SynthesizeRule expression_value (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2293)
The command '/bin/sh -c cd /sec/securify/ && securify staticanalysis/testContract.sol' returned a non-zero code: 1
YannisSach commented 3 years ago

Hi Kurt,

Unfortunately, Solidity version 0.7.+ is not yet fully supported. We are aware of the issue and we are working on it.

andyoulovexy commented 2 years ago

Hi Kurt,

Unfortunately, Solidity version 0.7.+ is not yet fully supported. We are aware of the issue and we are working on it.

which versions supported?0.6.0 isn't support?

2027304527 commented 10 months ago

in Dockerfile:

ARG SOLC=0.7.4

Error message:

Step 18/21 : RUN cd /sec/securify/staticanalysis/souffle_analysis &&         souffle --dl-program=../dl-program         --fact-dir=/sec/securify/staticanalysis/facts_in         --output-dir=/sec/securify/staticanalysis/facts_out         -L../libfunctors -w analysis.dl
 ---> Running in 9adeb4f73d41
Removing intermediate container 9adeb4f73d41
 ---> 8bcefeb788a6
Step 19/21 : ENV LD_LIBRARY_PATH /sec/securify/staticanalysis/libfunctors
 ---> Running in c6387ab83f6d
Removing intermediate container c6387ab83f6d
 ---> b3ccbab49d2b
Step 20/21 : RUN cd /sec/securify/ && securify staticanalysis/testContract.sol
 ---> Running in e8843cf8adfd
pragma directive defines a prior version to 0.7.4. Changing pragma version to 0.7.4....
Traceback (most recent call last):
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_iterative.py", line 53, in evaluate
    result = super()._execute_rule(rule, arguments)
  File "/sec/securify/grammar/attributes/evaluators/evaluator_base.py", line 42, in _execute_rule
    return rule.func(**{name: node for name, node in arguments.items()})
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2295, in expression_value
    declaration = self.resolve()
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2287, in resolve
    return self.resolve_reference(self.referenced_declaration)
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 46, in resolve_reference
    return self.root().ast_nodes_by_id().get(node_id, None)
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 161, in ast_nodes_by_id
    return {d.id: d for d in self.descendants() if d is not None}
  File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 161, in <dictcomp>
    return {d.id: d for d in self.descendants() if d is not None}
  File "/sec/securify/grammar/__init__.py", line 313, in descendants
    yield from ProductionOps.descendants(child)
  File "/sec/securify/grammar/__init__.py", line 313, in descendants
    yield from ProductionOps.descendants(child)
  File "/sec/securify/grammar/__init__.py", line 309, in descendants
    for child in ProductionOps.children(self):
  File "/sec/securify/grammar/__init__.py", line 300, in children
    child = getattr(self, name)
AttributeError: 'VariableDeclaration__AllAttrsMixin' object has no attribute 'value'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/securify", line 11, in <module>
    load_entry_point('securify==0.0.1', 'console_scripts', 'securify')()
  File "/sec/securify/__main__.py", line 277, in main
    matches.extend(pattern.find_matches())
  File "/sec/securify/analyses/patterns/static/static_analysis_patterns.py", line 73, in find_matches
    static = analysis_context.static_analysis
  File "/sec/securify/analyses/analysis.py", line 88, in static_analysis
    self._static = self.config.static_analysis(self)
  File "/sec/securify/__main__.py", line 255, in <lambda>
    static_analysis=lambda t: static_analysis.analyze_cfg(t.cfg, **souffle_config),
  File "/sec/securify/analyses/analysis.py", line 81, in cfg
    self._cfg = self.config.cfg_compiler(self)
  File "/sec/securify/__main__.py", line 254, in <lambda>
    cfg_compiler=lambda t: solidity_cfg_compiler.compile_cfg(t.ast).cfg,
  File "/sec/securify/solidity/solidity_cfg_compiler.py", line 88, in compile_cfg
    cfg = ast_attr.cfg
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_base.py", line 84, in __get__
    return self.__evaluator.evaluate(instance, self.__name)
  File "/sec/securify/grammar/attributes/evaluators/evaluator_demand_iterative.py", line 57, in evaluate
    f"Rule trace: {self.__rule_trace(dependency_path)}") from e
securify.grammar.attributes.AttributeGrammarError: Error during evaluation of rule 'expression_value'. 
Rule trace: 
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 199)
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 272)
  PushdownRule next_cfgs_unlinked (ImplicitPushdown)
  PushdownRule push_cfgs (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 163)
  SynthesizeRule contract_cfg_unlinked (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 258)
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 529)
  SynthesizeRule cfg_unmodified (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 507)
  SynthesizeRule cfg_body (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 500)
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 869)
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 1520)
  SynthesizeRule cfg (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2013)
  SynthesizeRule expression_value (File "/sec/securify/solidity/v_0_5_x/solidity_grammar_core.py", line 2293)
The command '/bin/sh -c cd /sec/securify/ && securify staticanalysis/testContract.sol' returned a non-zero code: 1

Hello, I have also encountered the same problem. Have you resolved it?

2027304527 commented 10 months ago

Hi Kurt,

Unfortunately, Solidity version 0.7.+ is not yet fully supported. We are aware of the issue and we are working on it.

Hello, I have also encountered the same problem. Have you resolved it?