Detect errors from ptrace() in child processes
This commit is contained in:
parent
8a6b9e0a71
commit
c986c06f68
19
src/strace.c
19
src/strace.c
|
@ -21,6 +21,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <errno.h>
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "strace.h"
|
#include "strace.h"
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
|
@ -60,11 +61,19 @@ int strace(char * argv[])
|
||||||
|
|
||||||
static int _strace_child(char * argv[])
|
static int _strace_child(char * argv[])
|
||||||
{
|
{
|
||||||
/* child */
|
errno = 0;
|
||||||
ptrace(PT_TRACE_ME, -1, NULL, (ptrace_data_t)0);
|
if(ptrace(PT_TRACE_ME, -1, NULL, (ptrace_data_t)0) == -1
|
||||||
execvp(argv[0], argv);
|
&& errno != 0)
|
||||||
_strace_error(argv[0], 1);
|
{
|
||||||
_exit(127);
|
_strace_error("ptrace", 1);
|
||||||
|
_exit(125);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
execvp(argv[0], argv);
|
||||||
|
_strace_error(argv[0], 1);
|
||||||
|
_exit(127);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user