// setup clears out previous fuzzing sessions and builds the executable we need to run afl-fuzz. // The binary is then copied to the working directory as "dm_afl_Release". func setup() (string, error) { if err := ClearBinaryGenerator(); err != nil { return "", err } // build afl if err := common.BuildAflDM("Release"); err != nil { return "", fmt.Errorf("Failed to build dm using afl-fuzz %s", err) } // copy to working directory executable := filepath.Join(config.Generator.WorkingPath, common.TEST_HARNESS_NAME+"_afl_Release") if err := fileutil.CopyExecutable(filepath.Join(config.Generator.SkiaRoot, "out", "Release", common.TEST_HARNESS_NAME), executable); err != nil { return "", err } return executable, nil }
// analyzeSkp is an analysisPackage for analyzing skp files. // Setup cleans out the work space, makes a copy of the Debug and Release parseskp executable. // Analyze simply invokes performBinaryAnalysis using parse_skp on the files that are passed in. var analyzeSkp = AnalysisPackage{ Setup: func(workingDirPath string) error { // Delete all previous binaries to get a clean start if err := os.RemoveAll(workingDirPath); err != nil && !os.IsNotExist(err) { return err } if err := os.MkdirAll(workingDirPath, 0755); err != nil { return err } // make a copy of the debug and release executables basePath := filepath.Join(config.Generator.SkiaRoot, "out") if err := fileutil.CopyExecutable(filepath.Join(basePath, "Debug", common.TEST_HARNESS_NAME), filepath.Join(workingDirPath, common.TEST_HARNESS_NAME+"_debug")); err != nil { return err } if err := fileutil.CopyExecutable(filepath.Join(basePath, "Release", common.TEST_HARNESS_NAME), filepath.Join(workingDirPath, common.TEST_HARNESS_NAME+"_release")); err != nil { return err } return nil }, Analyze: func(workingDirPath, skpFileName string) (uploadPackage, error) { upload := uploadPackage{ Name: skpFileName, FileType: "skp", FuzzType: BAD_FUZZ, FilePath: filepath.Join(config.Aggregator.BinaryFuzzPath, skpFileName), }