Skip to content
This repository has been archived by the owner on Nov 1, 2023. It is now read-only.

Add generic coverage task #763

Merged
66 commits merged into from
Jun 3, 2021
Merged
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
33af59a
Rough out generic coverage for Linux
ranweiler Mar 31, 2021
d043384
Split out OS-dependent recording
ranweiler Mar 31, 2021
f03728b
Fix signature, run blocking call on new thread
ranweiler Mar 31, 2021
f4d987a
Remove unused config field
ranweiler Mar 31, 2021
ca0304b
Add Windows `record()` impl
ranweiler Mar 31, 2021
5aaa1db
Factor out OS-specific recording impl
ranweiler Mar 31, 2021
b791d26
Add logging, batch coverage count
ranweiler Mar 31, 2021
220e165
Rename methods
ranweiler Mar 31, 2021
2ce6764
Format
ranweiler Mar 31, 2021
39b778c
Move function into method
ranweiler Mar 31, 2021
bab590f
Add newline
ranweiler Mar 31, 2021
5a995bb
Add heartbeat client to context
ranweiler Mar 31, 2021
0435068
Use heartbeat
ranweiler Mar 31, 2021
4b82b15
Report coverage stats
ranweiler Mar 31, 2021
cd405f2
Load existing total coverage
ranweiler Mar 31, 2021
4536e4b
Impl serde traits
ranweiler Apr 1, 2021
c04bf7d
Merge remote-tracking branch 'microsoft/main' into generic-cov-task
ranweiler Apr 2, 2021
a6ecb85
Remove redundant lifetime
ranweiler Apr 2, 2021
8610044
Lint
ranweiler Apr 2, 2021
c89ab0d
Remove unused field
ranweiler Apr 2, 2021
c37fe70
Add generic coverage task def
ranweiler Apr 2, 2021
fa6b42e
Update webhook docs
ranweiler Apr 2, 2021
0262530
Save and sync coverage
ranweiler Apr 6, 2021
4404615
Merge branch 'main' into generic-cov-task
ranweiler Apr 6, 2021
f679d47
Merge branch 'main' into generic-cov-task
ranweiler Apr 6, 2021
de9f29d
Merge remote-tracking branch 'microsoft/main' into generic-cov-task
ranweiler May 22, 2021
321c32d
Update use of `SyncedDir`
ranweiler May 22, 2021
bef6256
Update webhook docs
ranweiler May 22, 2021
84b4892
Merge branch 'main' into generic-cov-task
ranweiler May 24, 2021
b1d7f94
Rename `generic_coverage` to `coverage`
ranweiler May 24, 2021
a0cf098
Update task name in strings
ranweiler May 24, 2021
9581854
Add `coverage_filter` task feature
ranweiler May 24, 2021
f375315
Use `coverage` task in `libfuzzer basic` template, fix model
ranweiler May 25, 2021
7294463
Update webhook docs
ranweiler May 25, 2021
af0a921
Extend `target_options` for `coverage` task usage
ranweiler May 25, 2021
6a5c954
Write `coverage_filter` to config when present
ranweiler May 25, 2021
2b89fb3
Merge branch 'main' into generic-cov-task
ranweiler May 25, 2021
00fdc7d
Add missing field
ranweiler May 25, 2021
b45c84c
Hoist import
ranweiler May 25, 2021
5675ce8
Expand `target_exe`
ranweiler May 25, 2021
4febe28
Include `target_exe` in expander
ranweiler May 25, 2021
996c9ef
Check for expand error
ranweiler May 25, 2021
ddaed2e
Revert `target_exe` expansion for now
ranweiler May 25, 2021
523697a
Prepend `setup/` to `coverage_filter`
ranweiler May 25, 2021
a2d73ca
Rename helper method for setup-relative files
ranweiler May 25, 2021
e553f6d
Update examples
ranweiler May 25, 2021
3764838
Merge branch 'main' into setup-rel-blob-name
ranweiler May 25, 2021
6e6b8d2
Merge branch 'setup-rel-blob-name' into generic-cov-task
ranweiler May 25, 2021
2fe11a9
Validate and relativize coverage filter path
ranweiler May 25, 2021
f1370ab
Use setup-relative coverage filter blob name
ranweiler May 25, 2021
50431ce
Merge remote-tracking branch 'microsoft/main' into generic-cov-task
ranweiler May 26, 2021
a082704
Merge branch 'main' into generic-cov-task
ranweiler May 26, 2021
7718c62
Update `Recorder` usage
ranweiler May 26, 2021
a3126a1
Use timeout in task, via target_timeout` when present
ranweiler May 26, 2021
bc463f8
Add optional `target_timeout` to `libfuzzer basic`
ranweiler May 26, 2021
6d952a6
Add `target_timeout` to `coverage` task, libfuzzer template
ranweiler May 26, 2021
015a058
Merge branch 'main' into generic-cov-task
bmc-msft May 26, 2021
914b122
fix hide_secrets object colision
demoray May 27, 2021
c381989
call setattr only once
demoray May 27, 2021
f2a3b03
Merge remote-tracking branch 'bmc-msft/prevent-object-id-colision-mis…
ranweiler May 27, 2021
ec5f5bf
Merge remote-tracking branch 'microsoft/main' into generic-cov-task
ranweiler May 27, 2021
4e7ee31
Fix config gen
ranweiler May 27, 2021
af5db3b
Merge branch 'main' into generic-cov-task
ranweiler Jun 1, 2021
f76567d
Use updated heartbeat API
ranweiler Jun 1, 2021
67b8c3e
Merge branch 'main' into generic-cov-task
ranweiler Jun 2, 2021
dc6991c
Merge branch 'main' into generic-cov-task
bmc-msft Jun 3, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions docs/webhook_events.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -496,6 +500,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -837,6 +842,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -1864,6 +1870,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -2011,6 +2021,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -2525,6 +2536,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -2672,6 +2687,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -3018,6 +3034,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -3165,6 +3185,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -3456,6 +3477,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -3603,6 +3628,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -3868,6 +3894,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -4029,6 +4059,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -4307,6 +4338,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -4454,6 +4489,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down Expand Up @@ -5707,6 +5743,10 @@ Each event will be submitted via HTTP POST to the user provided URL.
"title": "Check Retry Count",
"type": "integer"
},
"coverage_filter": {
"title": "Coverage Filter",
"type": "string"
},
"duration": {
"title": "Duration",
"type": "integer"
Expand Down Expand Up @@ -5868,6 +5908,7 @@ Each event will be submitted via HTTP POST to the user provided URL.
"TaskType": {
"description": "An enumeration.",
"enum": [
"coverage",
"libfuzzer_fuzz",
"libfuzzer_coverage",
"libfuzzer_crash_report",
Expand Down
1 change: 1 addition & 0 deletions src/agent/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/agent/onefuzz-agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ async-trait = "0.1"
atexit = { path = "../atexit" }
backoff = { version = "0.3", features = ["tokio"] }
clap = "2.33"
coverage = { path = "../coverage" }
crossterm = "0.18"
env_logger = "0.8"
flume = "0.10.4"
Expand Down
8 changes: 8 additions & 0 deletions src/agent/onefuzz-agent/src/tasks/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ impl CommonConfig {
#[derive(Debug, Deserialize)]
#[serde(tag = "task_type")]
pub enum Config {
#[serde(alias = "coverage")]
Coverage(coverage::generic::Config),

#[serde(alias = "libfuzzer_fuzz")]
LibFuzzerFuzz(fuzz::libfuzzer_fuzz::Config),

Expand Down Expand Up @@ -106,6 +109,7 @@ impl Config {

fn common_mut(&mut self) -> &mut CommonConfig {
match self {
Config::Coverage(c) => &mut c.common,
Config::LibFuzzerFuzz(c) => &mut c.common,
Config::LibFuzzerMerge(c) => &mut c.common,
Config::LibFuzzerReport(c) => &mut c.common,
Expand All @@ -122,6 +126,7 @@ impl Config {

pub fn common(&self) -> &CommonConfig {
match self {
Config::Coverage(c) => &c.common,
Config::LibFuzzerFuzz(c) => &c.common,
Config::LibFuzzerMerge(c) => &c.common,
Config::LibFuzzerReport(c) => &c.common,
Expand All @@ -138,6 +143,7 @@ impl Config {

pub fn report_event(&self) {
let event_type = match self {
Config::Coverage(_) => "coverage",
Config::LibFuzzerFuzz(_) => "libfuzzer_fuzz",
Config::LibFuzzerMerge(_) => "libfuzzer_merge",
Config::LibFuzzerReport(_) => "libfuzzer_crash_report",
Expand Down Expand Up @@ -180,6 +186,7 @@ impl Config {
self.report_event();

match self {
Config::Coverage(config) => coverage::generic::CoverageTask::new(config).run().await,
Config::LibFuzzerFuzz(config) => {
fuzz::libfuzzer_fuzz::LibFuzzerFuzzTask::new(config)?
.run()
Expand All @@ -197,6 +204,7 @@ impl Config {
}
Config::LibFuzzerMerge(config) => merge::libfuzzer_merge::spawn(Arc::new(config)).await,
Config::GenericAnalysis(config) => analysis::generic::run(config).await,

Config::GenericGenerator(config) => {
fuzz::generator::GeneratorTask::new(config).run().await
}
Expand Down
Loading