commit 121448ceb9f9df03d88672917fe04506f783c76c
Author: Oswald Buddenhagen <[email protected]>
Date: Tue Dec 3 13:00:19 2019 +0100
make -DC work with yama ptrace protection
src/main.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/main.c b/src/main.c
index 9dbb116..d301e6f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -30,6 +30,9 @@
#include <signal.h>
#include <time.h>
#include <sys/wait.h>
+#ifdef __linux__
+# include <sys/prctl.h>
+#endif
int DFlags;
int JLimit;
@@ -144,17 +147,34 @@ crashHandler( int n )
dup2( 0, 1 );
dup2( 0, 2 );
error( "*** " EXE " caught signal %d. Starting debugger ...\n", n );
+#ifdef PR_SET_PTRACER
+ int pip[2];
+ if (pipe( pip ) < 0) {
+ perror( "pipe()" );
+ exit( 3 );
+ }
+#endif
switch ((dpid = fork())) {
case -1:
perror( "fork()" );
break;
case 0:
+#ifdef PR_SET_PTRACER
+ close( pip[1] );
+ read( pip[0], pbuf, 1 );
+ close( pip[0] );
+#endif
sprintf( pbuf, "%d", Pid );
sprintf( pabuf, "/proc/%d/exe", Pid );
execlp( "gdb", "gdb", pabuf, pbuf, (char *)0 );
perror( "execlp()" );
_exit( 1 );
default:
+#ifdef PR_SET_PTRACER
+ prctl( PR_SET_PTRACER, (ulong)dpid );
+ close( pip[1] );
+ close( pip[0] );
+#endif
waitpid( dpid, 0, 0 );
break;
}
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel