mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-29 16:54:51 +02:00
- (djm) [openbsd-compat/sigact.c] Avoid NULL derefs in ancient sigaction
replacement code; patch from ighighi AT gmail.com in bz#1240; ok dtucker
This commit is contained in:
parent
30fd49e606
commit
8b7ab960df
@ -1,3 +1,8 @@
|
|||||||
|
20080614
|
||||||
|
- (djm) [openbsd-compat/sigact.c] Avoid NULL derefs in ancient sigaction
|
||||||
|
replacement code; patch from ighighi AT gmail.com in bz#1240;
|
||||||
|
ok dtucker
|
||||||
|
|
||||||
20080613
|
20080613
|
||||||
- (dtucker) OpenBSD CVS Sync
|
- (dtucker) OpenBSD CVS Sync
|
||||||
- deraadt@cvs.openbsd.org 2008/06/13 09:44:36
|
- deraadt@cvs.openbsd.org 2008/06/13 09:44:36
|
||||||
@ -4364,4 +4369,4 @@
|
|||||||
OpenServer 6 and add osr5bigcrypt support so when someone migrates
|
OpenServer 6 and add osr5bigcrypt support so when someone migrates
|
||||||
passwords between UnixWare and OpenServer they will still work. OK dtucker@
|
passwords between UnixWare and OpenServer they will still work. OK dtucker@
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.5010 2008/06/13 23:14:46 dtucker Exp $
|
$Id: ChangeLog,v 1.5011 2008/06/15 00:55:34 djm Exp $
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
/* OPENBSD ORIGINAL: lib/libcurses/base/sigaction.c */
|
/* OPENBSD ORIGINAL: lib/libcurses/base/sigaction.c */
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
|
#include <errno.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "sigact.h"
|
#include "sigact.h"
|
||||||
|
|
||||||
@ -47,12 +48,17 @@
|
|||||||
int
|
int
|
||||||
sigaction(int sig, struct sigaction *sigact, struct sigaction *osigact)
|
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
|
int
|
||||||
sigemptyset (sigset_t *mask)
|
sigemptyset (sigset_t *mask)
|
||||||
{
|
{
|
||||||
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
*mask = 0;
|
*mask = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -62,7 +68,13 @@ sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
|
|||||||
{
|
{
|
||||||
sigset_t current = sigsetmask(0);
|
sigset_t current = sigsetmask(0);
|
||||||
|
|
||||||
if (omask) *omask = current;
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (omask)
|
||||||
|
*omask = current;
|
||||||
|
|
||||||
if (mode == SIG_BLOCK)
|
if (mode == SIG_BLOCK)
|
||||||
current |= *mask;
|
current |= *mask;
|
||||||
@ -78,12 +90,20 @@ sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
|
|||||||
int
|
int
|
||||||
sigsuspend (sigset_t *mask)
|
sigsuspend (sigset_t *mask)
|
||||||
{
|
{
|
||||||
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
return sigpause(*mask);
|
return sigpause(*mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sigdelset (sigset_t *mask, int sig)
|
sigdelset (sigset_t *mask, int sig)
|
||||||
{
|
{
|
||||||
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
*mask &= ~sigmask(sig);
|
*mask &= ~sigmask(sig);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -91,6 +111,10 @@ sigdelset (sigset_t * mask, int sig)
|
|||||||
int
|
int
|
||||||
sigaddset (sigset_t *mask, int sig)
|
sigaddset (sigset_t *mask, int sig)
|
||||||
{
|
{
|
||||||
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
*mask |= sigmask(sig);
|
*mask |= sigmask(sig);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -98,6 +122,10 @@ sigaddset (sigset_t * mask, int sig)
|
|||||||
int
|
int
|
||||||
sigismember (sigset_t *mask, int sig)
|
sigismember (sigset_t *mask, int sig)
|
||||||
{
|
{
|
||||||
|
if (!mask) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
return (*mask & sigmask(sig)) != 0;
|
return (*mask & sigmask(sig)) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user