From 84feb65f67f9dfdd4c1946c042d07d10c65d4feb Mon Sep 17 00:00:00 2001 From: Theo de Raadt Date: Fri, 19 Jan 2001 17:58:23 +0000 Subject: mark remaining signal races which are difficult to fix, and fix a few partially --- usr.bin/sort/sort.c | 6 +++--- usr.bin/sudo/visudo.c | 4 ++-- usr.bin/write/write.c | 17 ++++++++++------- usr.bin/yacc/main.c | 6 +++--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/usr.bin/sort/sort.c b/usr.bin/sort/sort.c index 0332a340b6b..7da39b63aeb 100644 --- a/usr.bin/sort/sort.c +++ b/usr.bin/sort/sort.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sort.c,v 1.14 2000/06/30 16:00:23 millert Exp $ */ +/* $OpenBSD: sort.c,v 1.15 2001/01/19 17:58:18 deraadt Exp $ */ /*- * Copyright (c) 1993 @@ -46,7 +46,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)sort.c 8.1 (Berkeley) 6/6/93"; #else -static char rcsid[] = "$OpenBSD: sort.c,v 1.14 2000/06/30 16:00:23 millert Exp $"; +static char rcsid[] = "$OpenBSD: sort.c,v 1.15 2001/01/19 17:58:18 deraadt Exp $"; #endif #endif /* not lint */ @@ -314,7 +314,7 @@ onsig(s) { cleanup(); - exit(2); /* return 2 on error/interrupt */ + _exit(2); /* return 2 on error/interrupt */ } static void diff --git a/usr.bin/sudo/visudo.c b/usr.bin/sudo/visudo.c index ba8fa565174..293bcf8dd32 100644 --- a/usr.bin/sudo/visudo.c +++ b/usr.bin/sudo/visudo.c @@ -507,10 +507,10 @@ Exit(sig) { (void) unlink(stmp); - if (sig > 0) + if (sig > 0) /* XXX signal race */ (void) fprintf(stderr, "%s exiting, caught signal %d.\n", Argv[0], sig); - exit(-sig); + exit(-sig); /* XXX for signal case, should be _exit() */ } static void diff --git a/usr.bin/write/write.c b/usr.bin/write/write.c index e5357d0deb6..60985c0ab29 100644 --- a/usr.bin/write/write.c +++ b/usr.bin/write/write.c @@ -1,4 +1,4 @@ -/* $OpenBSD: write.c,v 1.10 1999/02/21 08:28:16 deraadt Exp $ */ +/* $OpenBSD: write.c,v 1.11 2001/01/19 17:58:21 deraadt Exp $ */ /* $NetBSD: write.c,v 1.5 1995/08/31 21:48:32 jtc Exp $ */ /* @@ -47,7 +47,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)write.c 8.2 (Berkeley) 4/27/95"; #endif -static char *rcsid = "$OpenBSD: write.c,v 1.10 1999/02/21 08:28:16 deraadt Exp $"; +static char *rcsid = "$OpenBSD: write.c,v 1.11 2001/01/19 17:58:21 deraadt Exp $"; #endif /* not lint */ #include @@ -66,7 +66,7 @@ static char *rcsid = "$OpenBSD: write.c,v 1.10 1999/02/21 08:28:16 deraadt Exp $ #include #include -void done(); +void done __P((int sig)); void do_write __P((char *, char *, uid_t)); void wr_fputs __P((char *)); void search_utmp __P((char *, char *, char *, uid_t)); @@ -127,7 +127,7 @@ main(argc, argv) (void)fprintf(stderr, "usage: write user [tty]\n"); exit(1); } - done(); + done(0); /* NOTREACHED */ } @@ -285,10 +285,13 @@ do_write(tty, mytty, myuid) * done - cleanup and exit */ void -done() +done(int sig) { - (void)printf("EOF\r\n"); - exit(0); + (void)printf("EOF\r\n"); /* XXX signal race */ + if (sig) + _exit(0); + else + exit(0); } /* diff --git a/usr.bin/yacc/main.c b/usr.bin/yacc/main.c index 82e8840ba4b..7e80b1ef054 100644 --- a/usr.bin/yacc/main.c +++ b/usr.bin/yacc/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.10 1999/08/04 18:31:26 millert Exp $ */ +/* $OpenBSD: main.c,v 1.11 2001/01/19 17:58:22 deraadt Exp $ */ /* $NetBSD: main.c,v 1.5 1996/03/19 03:21:38 jtc Exp $ */ /* @@ -47,7 +47,7 @@ char copyright[] = #if 0 static char sccsid[] = "@(#)main.c 5.5 (Berkeley) 5/24/93"; #else -static char rcsid[] = "$OpenBSD: main.c,v 1.10 1999/08/04 18:31:26 millert Exp $"; +static char rcsid[] = "$OpenBSD: main.c,v 1.11 2001/01/19 17:58:22 deraadt Exp $"; #endif #endif /* not lint */ @@ -129,7 +129,7 @@ void onintr(signo) int signo; { - done(1); + done(1); /* XXX signal race */ } -- cgit v1.2.3