@@ -225,8 +225,13 @@ static void at_exit_handler(void) {
225
225
226
226
if (remove_shm ) {
227
227
228
+ remove_shm = false;
228
229
if (shm .map ) afl_shm_deinit (& shm );
229
- if (fsrv -> use_shmem_fuzz ) deinit_shmem (fsrv , shm_fuzz );
230
+ if ((shm_fuzz && shm_fuzz -> shmemfuzz_mode ) || fsrv -> use_shmem_fuzz ) {
231
+
232
+ deinit_shmem (fsrv , shm_fuzz );
233
+
234
+ }
230
235
231
236
}
232
237
@@ -1527,6 +1532,8 @@ int main(int argc, char **argv_orig, char **envp) {
1527
1532
1528
1533
/* initialize cmplog_mode */
1529
1534
shm_fuzz -> cmplog_mode = 0 ;
1535
+ atexit (at_exit_handler );
1536
+
1530
1537
u8 * map = afl_shm_init (shm_fuzz , MAX_FILE + sizeof (u32 ), 1 );
1531
1538
shm_fuzz -> shmemfuzz_mode = true;
1532
1539
if (!map ) { FATAL ("BUG: Zero return from afl_shm_init." ); }
@@ -1676,8 +1683,6 @@ int main(int argc, char **argv_orig, char **envp) {
1676
1683
1677
1684
}
1678
1685
1679
- atexit (at_exit_handler );
1680
-
1681
1686
if (get_afl_env ("AFL_DEBUG" )) {
1682
1687
1683
1688
int j = optind ;
@@ -1694,8 +1699,12 @@ int main(int argc, char **argv_orig, char **envp) {
1694
1699
1695
1700
map_size = fsrv -> map_size ;
1696
1701
1697
- if (fsrv -> support_shmem_fuzz && !fsrv -> use_shmem_fuzz )
1702
+ if (fsrv -> support_shmem_fuzz && !fsrv -> use_shmem_fuzz ) {
1703
+
1698
1704
shm_fuzz = deinit_shmem (fsrv , shm_fuzz );
1705
+ shm_fuzz -> shmemfuzz_mode = 0 ;
1706
+
1707
+ }
1699
1708
1700
1709
if (in_dir ) {
1701
1710
@@ -1728,8 +1737,12 @@ int main(int argc, char **argv_orig, char **envp) {
1728
1737
1729
1738
} else {
1730
1739
1731
- if (fsrv -> support_shmem_fuzz && !fsrv -> use_shmem_fuzz )
1740
+ if (fsrv -> support_shmem_fuzz && !fsrv -> use_shmem_fuzz ) {
1741
+
1732
1742
shm_fuzz = deinit_shmem (fsrv , shm_fuzz );
1743
+ shm_fuzz -> shmemfuzz_mode = 0 ;
1744
+
1745
+ }
1733
1746
1734
1747
#ifdef __linux__
1735
1748
if (!fsrv -> nyx_mode ) {
@@ -1777,9 +1790,14 @@ int main(int argc, char **argv_orig, char **envp) {
1777
1790
1778
1791
}
1779
1792
1780
- remove_shm = 0 ;
1793
+ remove_shm = false ;
1781
1794
afl_shm_deinit (& shm );
1782
- if (fsrv -> use_shmem_fuzz ) shm_fuzz = deinit_shmem (fsrv , shm_fuzz );
1795
+ if (fsrv -> use_shmem_fuzz ) {
1796
+
1797
+ shm_fuzz = deinit_shmem (fsrv , shm_fuzz );
1798
+ shm_fuzz -> shmemfuzz_mode = 0 ;
1799
+
1800
+ }
1783
1801
1784
1802
u32 ret ;
1785
1803
0 commit comments