Skip to content

Commit 934295d

Browse files
committed
Add copy_aflplusplus_submodule
1 parent 57bdb76 commit 934295d

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

cargo-afl/src/config.rs

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,7 @@ pub fn config(args: &Args) -> Result<()> {
5959
.is_ok_and(ExitStatus::success);
6060
ensure!(success, "could not run 'git'");
6161
} else {
62-
let success = Command::new("cp")
63-
.args([
64-
"-P", // preserve symlinks
65-
"-R", // copy directories recursively
66-
afl_src_dir_str,
67-
&*tempdir.path().to_string_lossy(),
68-
])
69-
.status()
70-
.as_ref()
71-
.is_ok_and(ExitStatus::success);
72-
ensure!(success, "could not copy directory {afl_src_dir:?}");
62+
copy_aflplusplus_submodule(&tempdir.path().join(AFL_SRC_PATH))?;
7363
}
7464

7565
let work_dir = tempdir.path().join(AFL_SRC_PATH);
@@ -90,6 +80,30 @@ pub fn config(args: &Args) -> Result<()> {
9080
Ok(())
9181
}
9282

83+
fn copy_aflplusplus_submodule(aflplusplus_dir: &Path) -> Result<()> {
84+
let afl_src_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join(AFL_SRC_PATH);
85+
let afl_src_dir_str = &afl_src_dir.to_string_lossy();
86+
87+
let Some(aflplusplus_dir_parent) = aflplusplus_dir.parent() else {
88+
bail!("could not get AFLplusplus dir parent");
89+
};
90+
debug_assert_eq!(aflplusplus_dir_parent.join(AFL_SRC_PATH), aflplusplus_dir);
91+
92+
let success = Command::new("cp")
93+
.args([
94+
"-P", // preserve symlinks
95+
"-R", // copy directories recursively
96+
afl_src_dir_str,
97+
&*aflplusplus_dir_parent.to_string_lossy(),
98+
])
99+
.status()
100+
.as_ref()
101+
.is_ok_and(ExitStatus::success);
102+
ensure!(success, "could not copy directory {afl_src_dir:?}");
103+
104+
Ok(())
105+
}
106+
93107
fn build_afl(args: &Args, work_dir: &Path) -> Result<()> {
94108
// if you had already installed cargo-afl previously you **must** clean AFL++
95109
let afl_dir = common::afl_dir()?;

0 commit comments

Comments
 (0)