You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1022 B
36 lines
1022 B
1 month ago
|
--- qemu-2.10.0-rc3-clean/linux-user/syscall.c 2017-08-15 11:39:41.000000000 -0700
|
||
|
+++ qemu-2.10.0-rc3/linux-user/syscall.c 2017-08-22 14:34:03.193088186 -0700
|
||
|
@@ -116,6 +116,8 @@
|
||
|
|
||
|
#include "qemu.h"
|
||
|
|
||
|
+extern unsigned int afl_forksrv_pid;
|
||
|
+
|
||
|
#ifndef CLONE_IO
|
||
|
#define CLONE_IO 0x80000000 /* Clone io context */
|
||
|
#endif
|
||
|
@@ -11688,8 +11690,21 @@
|
||
|
break;
|
||
|
|
||
|
case TARGET_NR_tgkill:
|
||
|
- ret = get_errno(safe_tgkill((int)arg1, (int)arg2,
|
||
|
- target_to_host_signal(arg3)));
|
||
|
+
|
||
|
+ {
|
||
|
+ int pid = (int)arg1,
|
||
|
+ tgid = (int)arg2,
|
||
|
+ sig = (int)arg3;
|
||
|
+
|
||
|
+ /* Not entirely sure if the below is correct for all architectures. */
|
||
|
+
|
||
|
+ if(afl_forksrv_pid && afl_forksrv_pid == pid && sig == SIGABRT)
|
||
|
+ pid = tgid = getpid();
|
||
|
+
|
||
|
+ ret = get_errno(safe_tgkill(pid, tgid, target_to_host_signal(sig)));
|
||
|
+
|
||
|
+ }
|
||
|
+
|
||
|
break;
|
||
|
|
||
|
#ifdef TARGET_NR_set_robust_list
|