mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-11-23 18:23:25 +08:00
- (bal) redo how we handle 'mysignal()'. Move it to
openbsd-compat/bsd-misc.c, s/mysignal/signal/ and #define signal to be our 'mysignal' by default. OK djm@
This commit is contained in:
parent
af4a6c3a56
commit
5ade9abc37
@ -2,7 +2,10 @@
|
|||||||
- (djm) Bug #621: Select OpenSC keys by usage attributes. Patch from
|
- (djm) Bug #621: Select OpenSC keys by usage attributes. Patch from
|
||||||
larsch@trustcenter.de
|
larsch@trustcenter.de
|
||||||
- (bal) openbsd-compat/ OpenBSD updates. Mostly licensing, ansifications
|
- (bal) openbsd-compat/ OpenBSD updates. Mostly licensing, ansifications
|
||||||
and minor fixes.
|
and minor fixes. OK djm@
|
||||||
|
- (bal) redo how we handle 'mysignal()'. Move it to
|
||||||
|
openbsd-compat/bsd-misc.c, s/mysignal/signal/ and #define signal to
|
||||||
|
be our 'mysignal' by default. OK djm@
|
||||||
|
|
||||||
20030822
|
20030822
|
||||||
- (djm) s/get_progname/ssh_get_progname/g to avoid conflict with Heimdal
|
- (djm) s/get_progname/ssh_get_progname/g to avoid conflict with Heimdal
|
||||||
@ -857,4 +860,4 @@
|
|||||||
- Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
|
- Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
|
||||||
Report from murple@murple.net, diagnosis from dtucker@zip.com.au
|
Report from murple@murple.net, diagnosis from dtucker@zip.com.au
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.2900 2003/08/25 01:10:51 mouring Exp $
|
$Id: ChangeLog,v 1.2901 2003/08/25 01:16:21 mouring Exp $
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
* XXX: we should tell the child how many bytes we need.
|
* XXX: we should tell the child how many bytes we need.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
RCSID("$Id: entropy.c,v 1.45 2003/05/16 05:51:45 djm Exp $");
|
RCSID("$Id: entropy.c,v 1.46 2003/08/25 01:16:21 mouring Exp $");
|
||||||
|
|
||||||
#ifndef OPENSSL_PRNG_ONLY
|
#ifndef OPENSSL_PRNG_ONLY
|
||||||
#define RANDOM_SEED_SIZE 48
|
#define RANDOM_SEED_SIZE 48
|
||||||
@ -75,7 +75,7 @@ seed_rng(void)
|
|||||||
if (pipe(p) == -1)
|
if (pipe(p) == -1)
|
||||||
fatal("pipe: %s", strerror(errno));
|
fatal("pipe: %s", strerror(errno));
|
||||||
|
|
||||||
old_sigchld = mysignal(SIGCHLD, SIG_DFL);
|
old_sigchld = signal(SIGCHLD, SIG_DFL);
|
||||||
if ((pid = fork()) == -1)
|
if ((pid = fork()) == -1)
|
||||||
fatal("Couldn't fork: %s", strerror(errno));
|
fatal("Couldn't fork: %s", strerror(errno));
|
||||||
if (pid == 0) {
|
if (pid == 0) {
|
||||||
@ -116,7 +116,7 @@ seed_rng(void)
|
|||||||
if (waitpid(pid, &ret, 0) == -1)
|
if (waitpid(pid, &ret, 0) == -1)
|
||||||
fatal("Couldn't wait for ssh-rand-helper completion: %s",
|
fatal("Couldn't wait for ssh-rand-helper completion: %s",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
mysignal(SIGCHLD, old_sigchld);
|
signal(SIGCHLD, old_sigchld);
|
||||||
|
|
||||||
/* We don't mind if the child exits upon a SIGPIPE */
|
/* We don't mind if the child exits upon a SIGPIPE */
|
||||||
if (!WIFEXITED(ret) &&
|
if (!WIFEXITED(ret) &&
|
||||||
|
26
misc.c
26
misc.c
@ -323,29 +323,3 @@ addargs(arglist *args, char *fmt, ...)
|
|||||||
args->list[args->num++] = xstrdup(buf);
|
args->list[args->num++] = xstrdup(buf);
|
||||||
args->list[args->num] = NULL;
|
args->list[args->num] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mysig_t
|
|
||||||
mysignal(int sig, mysig_t act)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_SIGACTION
|
|
||||||
struct sigaction sa, osa;
|
|
||||||
|
|
||||||
if (sigaction(sig, NULL, &osa) == -1)
|
|
||||||
return (mysig_t) -1;
|
|
||||||
if (osa.sa_handler != act) {
|
|
||||||
memset(&sa, 0, sizeof(sa));
|
|
||||||
sigemptyset(&sa.sa_mask);
|
|
||||||
sa.sa_flags = 0;
|
|
||||||
#if defined(SA_INTERRUPT)
|
|
||||||
if (sig == SIGALRM)
|
|
||||||
sa.sa_flags |= SA_INTERRUPT;
|
|
||||||
#endif
|
|
||||||
sa.sa_handler = act;
|
|
||||||
if (sigaction(sig, &sa, NULL) == -1)
|
|
||||||
return (mysig_t) -1;
|
|
||||||
}
|
|
||||||
return (osa.sa_handler);
|
|
||||||
#else
|
|
||||||
return (signal(sig, act));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
4
misc.h
4
misc.h
@ -31,7 +31,3 @@ struct arglist {
|
|||||||
int nalloc;
|
int nalloc;
|
||||||
};
|
};
|
||||||
void addargs(arglist *, char *, ...) __attribute__((format(printf, 2, 3)));
|
void addargs(arglist *, char *, ...) __attribute__((format(printf, 2, 3)));
|
||||||
|
|
||||||
/* wrapper for signal interface */
|
|
||||||
typedef void (*mysig_t)(int);
|
|
||||||
mysig_t mysignal(int sig, mysig_t act);
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
|
|
||||||
RCSID("$Id: bsd-misc.c,v 1.18 2003/08/21 23:34:42 djm Exp $");
|
RCSID("$Id: bsd-misc.c,v 1.19 2003/08/25 01:16:21 mouring Exp $");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NB. duplicate __progname in case it is an alias for argv[0]
|
* NB. duplicate __progname in case it is an alias for argv[0]
|
||||||
@ -200,3 +200,29 @@ tcsendbreak(int fd, int duration)
|
|||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
#endif /* HAVE_TCSENDBREAK */
|
#endif /* HAVE_TCSENDBREAK */
|
||||||
|
|
||||||
|
mysig_t
|
||||||
|
mysignal(int sig, mysig_t act)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
struct sigaction sa, osa;
|
||||||
|
|
||||||
|
if (sigaction(sig, NULL, &osa) == -1)
|
||||||
|
return (mysig_t) -1;
|
||||||
|
if (osa.sa_handler != act) {
|
||||||
|
memset(&sa, 0, sizeof(sa));
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
sa.sa_flags = 0;
|
||||||
|
#ifdef SA_INTERRUPT
|
||||||
|
if (sig == SIGALRM)
|
||||||
|
sa.sa_flags |= SA_INTERRUPT;
|
||||||
|
#endif
|
||||||
|
sa.sa_handler = act;
|
||||||
|
if (sigaction(sig, &sa, NULL) == -1)
|
||||||
|
return (mysig_t) -1;
|
||||||
|
}
|
||||||
|
return (osa.sa_handler);
|
||||||
|
#else
|
||||||
|
return (signal(sig, act));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: bsd-misc.h,v 1.11 2003/08/21 23:34:42 djm Exp $ */
|
/* $Id: bsd-misc.h,v 1.12 2003/08/25 01:16:22 mouring Exp $ */
|
||||||
|
|
||||||
#ifndef _BSD_MISC_H
|
#ifndef _BSD_MISC_H
|
||||||
#define _BSD_MISC_H
|
#define _BSD_MISC_H
|
||||||
@ -97,4 +97,10 @@ pid_t tcgetpgrp(int);
|
|||||||
int tcsendbreak(int, int);
|
int tcsendbreak(int, int);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* wrapper for signal interface */
|
||||||
|
typedef void (*mysig_t)(int);
|
||||||
|
mysig_t mysignal(int sig, mysig_t act);
|
||||||
|
|
||||||
|
#define signal(a,b) mysignal(a,b)
|
||||||
|
|
||||||
#endif /* _BSD_MISC_H */
|
#endif /* _BSD_MISC_H */
|
||||||
|
@ -212,7 +212,7 @@ update_progress_meter(int ignore)
|
|||||||
if (can_output())
|
if (can_output())
|
||||||
refresh_progress_meter();
|
refresh_progress_meter();
|
||||||
|
|
||||||
mysignal(SIGALRM, update_progress_meter);
|
signal(SIGALRM, update_progress_meter);
|
||||||
alarm(UPDATE_INTERVAL);
|
alarm(UPDATE_INTERVAL);
|
||||||
errno = save_errno;
|
errno = save_errno;
|
||||||
}
|
}
|
||||||
@ -243,7 +243,7 @@ start_progress_meter(char *f, off_t filesize, off_t *stat)
|
|||||||
if (can_output())
|
if (can_output())
|
||||||
refresh_progress_meter();
|
refresh_progress_meter();
|
||||||
|
|
||||||
mysignal(SIGALRM, update_progress_meter);
|
signal(SIGALRM, update_progress_meter);
|
||||||
alarm(UPDATE_INTERVAL);
|
alarm(UPDATE_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
sshd.c
4
sshd.c
@ -1368,7 +1368,7 @@ main(int ac, char **av)
|
|||||||
if ((options.protocol & SSH_PROTO_1) &&
|
if ((options.protocol & SSH_PROTO_1) &&
|
||||||
key_used == 0) {
|
key_used == 0) {
|
||||||
/* Schedule server key regeneration alarm. */
|
/* Schedule server key regeneration alarm. */
|
||||||
mysignal(SIGALRM, key_regeneration_alarm);
|
signal(SIGALRM, key_regeneration_alarm);
|
||||||
alarm(options.key_regeneration_time);
|
alarm(options.key_regeneration_time);
|
||||||
key_used = 1;
|
key_used = 1;
|
||||||
}
|
}
|
||||||
@ -1457,7 +1457,7 @@ main(int ac, char **av)
|
|||||||
* mode; it is just annoying to have the server exit just when you
|
* mode; it is just annoying to have the server exit just when you
|
||||||
* are about to discover the bug.
|
* are about to discover the bug.
|
||||||
*/
|
*/
|
||||||
mysignal(SIGALRM, grace_alarm_handler);
|
signal(SIGALRM, grace_alarm_handler);
|
||||||
if (!debug_flag)
|
if (!debug_flag)
|
||||||
alarm(options.login_grace_time);
|
alarm(options.login_grace_time);
|
||||||
|
|
||||||
|
12
sshpty.c
12
sshpty.c
@ -101,12 +101,12 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
|
|||||||
error("/dev/ptmx: %.100s", strerror(errno));
|
error("/dev/ptmx: %.100s", strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
old_signal = mysignal(SIGCHLD, SIG_DFL);
|
old_signal = signal(SIGCHLD, SIG_DFL);
|
||||||
if (grantpt(ptm) < 0) {
|
if (grantpt(ptm) < 0) {
|
||||||
error("grantpt: %.100s", strerror(errno));
|
error("grantpt: %.100s", strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
mysignal(SIGCHLD, old_signal);
|
signal(SIGCHLD, old_signal);
|
||||||
if (unlockpt(ptm) < 0) {
|
if (unlockpt(ptm) < 0) {
|
||||||
error("unlockpt: %.100s", strerror(errno));
|
error("unlockpt: %.100s", strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
@ -274,9 +274,9 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
|
|||||||
|
|
||||||
fd = open(ttyname, O_RDWR|O_NOCTTY);
|
fd = open(ttyname, O_RDWR|O_NOCTTY);
|
||||||
if (fd != -1) {
|
if (fd != -1) {
|
||||||
mysignal(SIGHUP, SIG_IGN);
|
signal(SIGHUP, SIG_IGN);
|
||||||
ioctl(fd, TCVHUP, (char *)NULL);
|
ioctl(fd, TCVHUP, (char *)NULL);
|
||||||
mysignal(SIGHUP, SIG_DFL);
|
signal(SIGHUP, SIG_DFL);
|
||||||
setpgid(0, 0);
|
setpgid(0, 0);
|
||||||
close(fd);
|
close(fd);
|
||||||
} else {
|
} else {
|
||||||
@ -323,9 +323,9 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
|
|||||||
error("SETPGRP %s",strerror(errno));
|
error("SETPGRP %s",strerror(errno));
|
||||||
#endif /* HAVE_NEWS4 */
|
#endif /* HAVE_NEWS4 */
|
||||||
#ifdef USE_VHANGUP
|
#ifdef USE_VHANGUP
|
||||||
old = mysignal(SIGHUP, SIG_IGN);
|
old = signal(SIGHUP, SIG_IGN);
|
||||||
vhangup();
|
vhangup();
|
||||||
mysignal(SIGHUP, old);
|
signal(SIGHUP, old);
|
||||||
#endif /* USE_VHANGUP */
|
#endif /* USE_VHANGUP */
|
||||||
fd = open(ttyname, O_RDWR);
|
fd = open(ttyname, O_RDWR);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user