On Tue, Nov 13, 2012 at 11:31:25AM +0000, Markos Chandras wrote: > From: Markos Chandras <markos.chand...@imgtec.com> > > Signed-off-by: Markos Chandras <markos.chand...@imgtec.com> > --- > libc/sysdeps/linux/common/dup2.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/libc/sysdeps/linux/common/dup2.c > b/libc/sysdeps/linux/common/dup2.c > index 006f06b..e58105d 100644 > --- a/libc/sysdeps/linux/common/dup2.c > +++ b/libc/sysdeps/linux/common/dup2.c > @@ -10,6 +10,12 @@ > #include <sys/syscall.h> > #include <unistd.h> > > - > +#if defined(__NR_dup3) && ! defined(__NR_dup2) > +int dup2(int old, int newfd) > +{ > + return dup3(old, newfd, 0); > +} > +#else > _syscall2(int, dup2, int, oldfd, int, newfd) > +#endif > libc_hidden_def(dup2)
This is not valid. dup3 explicitly fails if old==newfd, but dup2 is required to work in this case. However you can't just return success in that case, because old might not be valid. You need to perform fcntl or something to determine if the fd is valid, and return an error if it's not. Rich _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc