From 75506d9c65c50a62814b97ce2b1324efc5baca61 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 6 Mar 2021 12:31:02 +0100 Subject: syz-manager: remove stale report files We rotate crash log/report files so that we don't fill the whole disk. But we only save report file if it's not empty. As the result during rotation it's possible to save a new log, but leave an old report in place. Which leads to a confusing combination. Remove report file is the report is empty. --- syz-manager/manager.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/syz-manager/manager.go b/syz-manager/manager.go index ca28efdac..f5ca0d647 100644 --- a/syz-manager/manager.go +++ b/syz-manager/manager.go @@ -748,17 +748,18 @@ func (mgr *Manager) saveCrash(crash *Crash) bool { oldestTime = info.ModTime() } } - osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("log%v", oldestI)), crash.Output) - if mgr.cfg.Tag != "" { - osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("tag%v", oldestI)), []byte(mgr.cfg.Tag)) - } - if len(crash.Report.Report) > 0 { - osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("report%v", oldestI)), crash.Report.Report) - } - if len(crash.machineInfo) > 0 { - osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("machineInfo%v", oldestI)), crash.machineInfo) + writeOrRemove := func(name string, data []byte) { + filename := filepath.Join(dir, name+fmt.Sprint(oldestI)) + if len(data) == 0 { + os.Remove(filename) + return + } + osutil.WriteFile(filename, data) } - + writeOrRemove("log", crash.Output) + writeOrRemove("tag", []byte(mgr.cfg.Tag)) + writeOrRemove("report", crash.Report.Report) + writeOrRemove("machineInfo", crash.machineInfo) return mgr.needLocalRepro(crash) } -- cgit mrf-deployment