mirror of
https://github.com/reactos/syzkaller-ros.git
synced 2025-02-17 10:18:48 +00:00
prog: fix dynamic prio calculation
Dynamic prio is meant to prioritize calls that are already used together in existing programs. The calculation used call index in the program instead of call ID, which does not make any sense and is a plain bug. It prioritized calls starting from 'a' (as syscalls are sorted). Use call ID for dynamic prio calculation. Static prios for add_key: 1.0000 keyctl$search 1.0000 request_key 1.0000 add_key 0.5411 keyctl$assume_authority 0.5411 keyctl$setperm 0.5411 keyctl$set_timeout 0.5411 keyctl$unlink 0.5411 keyctl$revoke 0.5411 keyctl$reject 0.5411 keyctl$read 0.5411 keyctl$negate 0.5411 keyctl$link 0.5411 keyctl$join 0.5411 keyctl$invalidate 0.5411 keyctl$instantiate_iov 0.5411 keyctl$instantiate 0.5411 keyctl$get_security 0.5411 keyctl$get_persistent 0.5411 keyctl$update Dynamic prios before fix: 0.1000 accept 0.1000 accept$alg 0.1000 accept$ax25 0.1000 accept$inet 0.1000 accept$inet6 0.1000 accept$inet_sctp 0.1000 accept$ipx 0.1000 accept$netrom 0.1000 accept$nfc_llcp 0.1000 accept$unix 0.1000 accept4 0.1000 accept4$ax25 0.1000 accept4$inet 0.1000 accept4$inet6 0.1000 accept4$inet_sctp 0.1000 accept4$ipx 0.1000 accept4$unix 0.1000 acct Dynamic prios after fix: 0.2465 request_key 0.1142 keyctl$search 0.1000 add_key 0.1000 perf_event_open 0.0766 keyctl$invalidate 0.0717 keyctl$setperm 0.0717 keyctl$unlink 0.0717 keyctl$instantiate_iov 0.0681 keyctl$read 0.0649 keyctl$update 0.0649 keyctl$chown 0.0645 keyctl$link 0.0645 keyctl$get_security 0.0631 keyctl$revoke 0.0622 keyctl$clear 0.0622 keyctl$reject 0.0618 keyctl$set_timeout 0.0618 keyctl$negate 0.0613 keyctl$instantiate Fixes #164
This commit is contained in:
parent
e101b931ac
commit
0036885d53
11
prog/prio.go
11
prog/prio.go
@ -140,12 +140,15 @@ func calcDynamicPrio(corpus []*Prog) [][]float32 {
|
||||
prios[i] = make([]float32, len(sys.Calls))
|
||||
}
|
||||
for _, p := range corpus {
|
||||
for i0 := 0; i0 < len(p.Calls); i0++ {
|
||||
for i1 := 0; i1 < len(p.Calls); i1++ {
|
||||
if i0 == i1 {
|
||||
for _, c0 := range p.Calls {
|
||||
for _, c1 := range p.Calls {
|
||||
id0 := c0.Meta.ID
|
||||
id1 := c1.Meta.ID
|
||||
// There are too many mmap's anyway.
|
||||
if id0 == id1 || c0.Meta.Name == "mmap" || c1.Meta.Name == "mmap" {
|
||||
continue
|
||||
}
|
||||
prios[i0][i1] += 1.0
|
||||
prios[id0][id1] += 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user