diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-01-05 11:46:33 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-01-05 11:46:33 +0100 |
| commit | 147b97431bbce5682a6b209ab18bbbe9be28d420 (patch) | |
| tree | eee047b17a0678d5f18dd39102ed778cfa8181cc | |
| parent | b726d3762794744d94df18eeb8d7d9cbca83a317 (diff) | |
syz-manager: show list of all enabled syscalls
1. Show all syscalls even if they don't have coverage yet.
2. Show full syscall names.
3. Show prio/corpus/cover for paticular syscall descrimination.
This allows to check what exactly syscalls are enabled
and see prio/corpus/cover for a single syscall.
| -rw-r--r-- | syz-fuzzer/proc.go | 2 | ||||
| -rw-r--r-- | syz-manager/html.go | 25 |
2 files changed, 13 insertions, 14 deletions
diff --git a/syz-fuzzer/proc.go b/syz-fuzzer/proc.go index 7cf222c60..cbac400ac 100644 --- a/syz-fuzzer/proc.go +++ b/syz-fuzzer/proc.go @@ -115,7 +115,7 @@ func (proc *Proc) triageInput(item *WorkTriage) { callName := ".extra" logCallName := "extra" if item.call != -1 { - callName = item.p.Calls[item.call].Meta.CallName + callName = item.p.Calls[item.call].Meta.Name logCallName = fmt.Sprintf("call #%v %v", item.call, callName) } log.Logf(3, "triaging input for %v (new signal=%v)", logCallName, newSignal.Len()) diff --git a/syz-manager/html.go b/syz-manager/html.go index 8abefc546..9d756bfb0 100644 --- a/syz-manager/html.go +++ b/syz-manager/html.go @@ -170,8 +170,13 @@ func convertStats(stats map[string]uint64, secs uint64) []UIStat { func (mgr *Manager) collectSyscallInfo() map[string]*CallCov { mgr.mu.Lock() defer mgr.mu.Unlock() - + if mgr.checkResult == nil { + return nil + } calls := make(map[string]*CallCov) + for _, call := range mgr.checkResult.EnabledCalls[mgr.cfg.Sandbox] { + calls[mgr.target.Syscalls[call].Name] = new(CallCov) + } for _, inp := range mgr.corpus { if calls[inp.Call] == nil { calls[inp.Call] = new(CallCov) @@ -316,16 +321,10 @@ func (mgr *Manager) httpPrio(w http.ResponseWriter, r *http.Request) { mgr.mu.Lock() defer mgr.mu.Unlock() - call := r.FormValue("call") - idx := -1 - for i, c := range mgr.target.Syscalls { - if c.CallName == call { - idx = i - break - } - } - if idx == -1 { - http.Error(w, fmt.Sprintf("unknown call: %v", call), http.StatusInternalServerError) + callName := r.FormValue("call") + call := mgr.target.SyscallMap[callName] + if call == nil { + http.Error(w, fmt.Sprintf("unknown call: %v", callName), http.StatusInternalServerError) return } @@ -340,8 +339,8 @@ func (mgr *Manager) httpPrio(w http.ResponseWriter, r *http.Request) { } prios := mgr.target.CalculatePriorities(corpus) - data := &UIPrioData{Call: call} - for i, p := range prios[idx] { + data := &UIPrioData{Call: callName} + for i, p := range prios[call.ID] { data.Prios = append(data.Prios, UIPrio{mgr.target.Syscalls[i].Name, p}) } sort.Slice(data.Prios, func(i, j int) bool { |
