@@ -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+
93107fn 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