0

我正在使用来自美国 CERT 的一个用 python 编写的软件来做一些模糊测试。软件中包含一个 minimumr.py 工具,该工具旨在针对某些导致崩溃的测试用例运行,以便准确确定导致崩溃的字节突变。

但是,当尝试运行该工具时,它会向我吐出一个错误。谷歌搜索工具和错误都是空白。尝试以有限的 Python 经验自行解决问题也无济于事。关于导致错误的任何想法,以便我可以修复它并让工具正常工作?

正在使用的命令行选项是:minimizer.py --stringmode

错误输出如下:

Traceback (most recent call last):
File "C:\FOE2\tools\minimize.py", line 234, in <module>
main()
File "C:\FOE2\tools\minimize.py", line 183, in main
config = Config(cfg_file).config
File "C:\FOE2\certfuzz\campaign\config\__init__.py", line 76, in __init__
self._set_derived_options()
File "C:\FOE2\certfuzz\campaign\config\foe_config.py", line 93, in _set_derived_options
t = Template(self.config['target']['cmdline_template'])
TypeError: 'NoneType' object has no attribute '__getitem__'

最后两行错误中两个文件的代码段是:

__init__.py

 def __init__(self, config_file):
    self.file = config_file
    self.config = None

    self.load()
    self._set_derived_options()

    self.validations = []
    self._add_validations()
    self.validate()

def _set_derived_options(self):
    pass

然后从foe_config_.py(添加前面的代码行以防万一它们相关。):

class Config(ConfigBase):
  def _add_validations(self):
    self.validations.append(self._validate_debugger_timeout_exceeds_runner)

  def _set_derived_options(self):
    # interpolate program name
    # add quotes around $SEEDFILE
    t = Template(self.config['target']['cmdline_template'])
    #self.config['target']['cmdline_template'] = t.safe_substitute(PROGRAM=self.config['target']['program'])
    self.config['target']['cmdline_template'] = t.safe_substitute(PROGRAM=quoted(self.config['target']['program']), SEEDFILE=quoted('$SEEDFILE'))
4

1 回答 1

4

从您发布的代码中很难分辨,但它看起来像__init__设置self.configNone. 然后它调用_set_derived_optionswhich uses self.confighere:

t = Template(self.config['target']['cmdline_template'])

self.config从未改变过None。你不会期望None['target']给你任何东西(除了例外),但我认为这基本上就是你在这里所做的。

于 2013-02-18T19:09:08.413 回答