trailofbits / sienna-locomotive

A user-friendly fuzzing and crash triage tool for Windows
https://blog.trailofbits.com/user-friendly-fuzzing-with-sienna-locomotive
GNU Affero General Public License v3.0
131 stars 24 forks source link

GUI: Don't enable the fuzzer button until the user selects at least one function #368

Open woodruffw opened 6 years ago

woodruffw commented 6 years ago

Right now, we enable the fuzzing button as soon as the wizard returns (and gives us a valid set of targetable functions):

    def wizard_finished(self, wizard_output):
        """ Dump the results of a wizard run to the target file and rebuild the tree """
        if wizard_output:
            self.target_data.set_target_list(wizard_output)
            self.build_func_tree()
            self.fuzzer_button.setEnabled(True)
        else:
            QtWidgets.QMessageBox.critical(None, "Wizard failure",
                                           "No wizard results; is the target 64-bit?")

We should defer that until the user actually selects one or more functions to fuzz, as running the fuzzer without any selections is essentially a no-op (and may confuse the user into thinking that they don't need to select anything).