aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-01-05 11:46:33 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-01-05 11:46:33 +0100
commit147b97431bbce5682a6b209ab18bbbe9be28d420 (patch)
treeeee047b17a0678d5f18dd39102ed778cfa8181cc
parentb726d3762794744d94df18eeb8d7d9cbca83a317 (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.go2
-rw-r--r--syz-manager/html.go25
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 {