Use GuestAddr in QemuInstrumentationFilter (#1085)
* Use GuestAddr in QemuInstrumentationFilter * fix types
This commit is contained in:
parent
b7296db406
commit
1b0cdab3e4
@ -561,7 +561,7 @@ impl QemuAsanHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
|
||||
@ -748,7 +748,7 @@ where
|
||||
QT: QemuHelperTuple<S>,
|
||||
{
|
||||
let h = hooks.match_helper_mut::<QemuAsanHelper>().unwrap();
|
||||
if h.must_instrument(pc.into()) {
|
||||
if h.must_instrument(pc) {
|
||||
Some(pc.into())
|
||||
} else {
|
||||
None
|
||||
|
@ -26,7 +26,7 @@ impl QemuCallTracerHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
|
||||
@ -131,7 +131,7 @@ where
|
||||
{
|
||||
let emu = hooks.emulator();
|
||||
if let Some(h) = hooks.helpers().match_first_type::<QemuCallTracerHelper>() {
|
||||
if !h.must_instrument(pc.into()) {
|
||||
if !h.must_instrument(pc) {
|
||||
return None;
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ impl QemuCmpLogHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
}
|
||||
@ -83,7 +83,7 @@ impl QemuCmpLogChildHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
}
|
||||
@ -127,7 +127,7 @@ where
|
||||
QT: QemuHelperTuple<S>,
|
||||
{
|
||||
if let Some(h) = hooks.match_helper_mut::<QemuCmpLogHelper>() {
|
||||
if !h.must_instrument(pc.into()) {
|
||||
if !h.must_instrument(pc) {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
@ -159,7 +159,7 @@ where
|
||||
QT: QemuHelperTuple<S>,
|
||||
{
|
||||
if let Some(h) = hooks.match_helper_mut::<QemuCmpLogChildHelper>() {
|
||||
if !h.must_instrument(pc.into()) {
|
||||
if !h.must_instrument(pc) {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ impl QemuDrCovHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
}
|
||||
@ -178,7 +178,7 @@ where
|
||||
.helpers()
|
||||
.match_first_type::<QemuDrCovHelper>()
|
||||
.unwrap();
|
||||
if !drcov_helper.must_instrument(pc.into()) {
|
||||
if !drcov_helper.must_instrument(pc) {
|
||||
return None;
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ impl QemuEdgeCoverageHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
}
|
||||
@ -112,7 +112,7 @@ impl QemuEdgeCoverageChildHelper {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn must_instrument(&self, addr: u64) -> bool {
|
||||
pub fn must_instrument(&self, addr: GuestAddr) -> bool {
|
||||
self.filter.allowed(addr)
|
||||
}
|
||||
}
|
||||
@ -162,7 +162,7 @@ where
|
||||
QT: QemuHelperTuple<S>,
|
||||
{
|
||||
if let Some(h) = hooks.helpers().match_first_type::<QemuEdgeCoverageHelper>() {
|
||||
if !h.must_instrument(src.into()) && !h.must_instrument(dest.into()) {
|
||||
if !h.must_instrument(src) && !h.must_instrument(dest) {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
@ -224,7 +224,7 @@ where
|
||||
.helpers()
|
||||
.match_first_type::<QemuEdgeCoverageChildHelper>()
|
||||
{
|
||||
if !h.must_instrument(src.into()) && !h.must_instrument(dest.into()) {
|
||||
if !h.must_instrument(src) && !h.must_instrument(dest) {
|
||||
return None;
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,10 @@ use core::{fmt::Debug, ops::Range};
|
||||
|
||||
use libafl::{bolts::tuples::MatchFirstType, executors::ExitKind, inputs::UsesInput};
|
||||
|
||||
use crate::{emu::Emulator, hooks::QemuHooks};
|
||||
use crate::{
|
||||
emu::{Emulator, GuestAddr},
|
||||
hooks::QemuHooks,
|
||||
};
|
||||
|
||||
/// A helper for `libafl_qemu`.
|
||||
// TODO remove 'static when specialization will be stable
|
||||
@ -114,14 +117,14 @@ where
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum QemuInstrumentationFilter {
|
||||
AllowList(Vec<Range<u64>>),
|
||||
DenyList(Vec<Range<u64>>),
|
||||
AllowList(Vec<Range<GuestAddr>>),
|
||||
DenyList(Vec<Range<GuestAddr>>),
|
||||
None,
|
||||
}
|
||||
|
||||
impl QemuInstrumentationFilter {
|
||||
#[must_use]
|
||||
pub fn allowed(&self, addr: u64) -> bool {
|
||||
pub fn allowed(&self, addr: GuestAddr) -> bool {
|
||||
match self {
|
||||
QemuInstrumentationFilter::AllowList(l) => {
|
||||
for rng in l {
|
||||
|
Loading…
x
Reference in New Issue
Block a user