Bugzilla – Attachment 1527 Details for
Bug 1240
Better sigaction() emulation: No NULL dereferences
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
tidied diff
sigact.diff (text/plain), 2.08 KB, created by
Damien Miller
on 2008-06-15 10:42:14 AEST
(
hide
)
Description:
tidied diff
Filename:
MIME Type:
Creator:
Damien Miller
Created:
2008-06-15 10:42:14 AEST
Size:
2.08 KB
patch
obsolete
>Index: sigact.c >=================================================================== >RCS file: /var/cvs/openssh/openbsd-compat/sigact.c,v >retrieving revision 1.6 >diff -u -p -r1.6 sigact.c >--- sigact.c 10 Nov 2005 08:29:13 -0000 1.6 >+++ sigact.c 15 Jun 2008 00:41:32 -0000 >@@ -36,6 +36,7 @@ > /* OPENBSD ORIGINAL: lib/libcurses/base/sigaction.c */ > > #include "includes.h" >+#include <errno.h> > #include <signal.h> > #include "sigact.h" > >@@ -47,28 +48,39 @@ > int > sigaction(int sig, struct sigaction *sigact, struct sigaction *osigact) > { >- return sigvec(sig, &(sigact->sv), &(osigact->sv)); >+ return sigvec(sig, sigact ? &sigact->sv : NULL, >+ osigact ? &osigact->sv : NULL); > } > > int >-sigemptyset (sigset_t * mask) >+sigemptyset (sigset_t *mask) > { >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > *mask = 0; > return 0; > } > > int >-sigprocmask (int mode, sigset_t * mask, sigset_t * omask) >+sigprocmask (int mode, sigset_t *mask, sigset_t *omask) > { > sigset_t current = sigsetmask(0); > >- if (omask) *omask = current; >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > >- if (mode==SIG_BLOCK) >+ if (omask) >+ *omask = current; >+ >+ if (mode == SIG_BLOCK) > current |= *mask; >- else if (mode==SIG_UNBLOCK) >+ else if (mode == SIG_UNBLOCK) > current &= ~*mask; >- else if (mode==SIG_SETMASK) >+ else if (mode == SIG_SETMASK) > current = *mask; > > sigsetmask(current); >@@ -76,28 +88,44 @@ sigprocmask (int mode, sigset_t * mask, > } > > int >-sigsuspend (sigset_t * mask) >+sigsuspend (sigset_t *mask) > { >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > return sigpause(*mask); > } > > int >-sigdelset (sigset_t * mask, int sig) >+sigdelset (sigset_t *mask, int sig) > { >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > *mask &= ~sigmask(sig); > return 0; > } > > int >-sigaddset (sigset_t * mask, int sig) >+sigaddset (sigset_t *mask, int sig) > { >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > *mask |= sigmask(sig); > return 0; > } > > int >-sigismember (sigset_t * mask, int sig) >+sigismember (sigset_t *mask, int sig) > { >+ if (!mask) { >+ errno = EINVAL; >+ return -1; >+ } > return (*mask & sigmask(sig)) != 0; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1240
:
1193
| 1527