On 01/05/2012 11:55 AM, Markos Chandras wrote:
Invalid signals have no handlers so when trying to restore the old
handler to a bad signal a SIGSEGV occurs. This is because the library
tries to store the old handler to an invalid memory area where it things
the bad signal lives.
Signed-off-by: Markos Chandras<markos.chand...@imgtec.com>
---
libpthread/linuxthreads/signals.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libpthread/linuxthreads/signals.c
b/libpthread/linuxthreads/signals.c
index c081255..61b411a 100644
--- a/libpthread/linuxthreads/signals.c
+++ b/libpthread/linuxthreads/signals.c
@@ -113,7 +113,7 @@ int __pthread_sigaction(int sig, const struct sigaction *
act,
newactp = NULL;
if (__libc_sigaction(sig, newactp, oact) == -1)
{
- if (act)
+ if (act&& (sig> 0&& sig< NSIG))
__sighandler[sig].old = (arch_sighandler_t) old;
return -1;
}
For some peculiar reason, the first e-mail I sent with the summary did
not make it to the mailing list. This patch is in conjunction with bug
https://bugs.busybox.net/show_bug.cgi?id=4640 and since I am not sure
whether linuxthreads are maintained anymore or not, I would like to send
this patch here for review.
--
markos
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc