|
Message-ID: <20170628151328.GD1627@brightrain.aerifal.cx> Date: Wed, 28 Jun 2017 11:13:28 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: [PATCH] fix undefined behavior in ptrace On Wed, Jun 28, 2017 at 04:25:13PM +0300, Alexander Monakov wrote: > --- > src/linux/ptrace.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/src/linux/ptrace.c b/src/linux/ptrace.c > index 83b8022b..ab7fcda3 100644 > --- a/src/linux/ptrace.c > +++ b/src/linux/ptrace.c > @@ -7,14 +7,17 @@ long ptrace(int req, ...) > { > va_list ap; > pid_t pid; > - void *addr, *data, *addr2; > + void *addr, *data, *addr2 = 0; > long ret, result; > > va_start(ap, req); > pid = va_arg(ap, pid_t); > addr = va_arg(ap, void *); > data = va_arg(ap, void *); > + /* PTRACE_{READ,WRITE}{DATA,TEXT} are specific to SPARC. */ > +#ifdef PTRACE_READTEXT > addr2 = va_arg(ap, void *); > +#endif I think there's still UB here, reading more args than were passed. These calls to va_arg should probably be dependent on the particular req; I don't see any reason for it to be compile-time dependent on the presence of one particular req value. Otherwise yes it's an improvement. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.