'Test if the current combination of `fuzz_req`, `varname` hasn\'t
already been reported to the knowledge base.
:param mutant: A Mutant sub-class.
:param varname: Typically the name of the injection parameter.
:param pname: The name of the plugin that presumably reported
the vulnerability. Defaults to self.name.
:param kb_varname: The name of the variable in the kb, where
the vulnerability was saved. Defaults to self.name.'

def _has_no_bug(self, mutant, varname='', pname='', kb_varname=''):

    with self._plugin_lock:
        pname = (pname or self.get_name())
        kb_varname = (kb_varname or pname)
        if (not varname):
            varname = mutant.get_token_name()
        vulns = kb.kb.get(pname, kb_varname)
        for vuln in vulns:
            if ((vuln.get_token_name() == varname) and (mutant.get_dc().keys() == vuln.get_dc().keys()) and are_variants(vuln.get_uri(), mutant.get_uri())):
                return False
        return True
