Synopsis: Fixes race in SIGPIPE and SIGURG handling. NetBSD versions: 1.0, 1.1, 1.2, and 1.2B upto 19970123. Thanks to: David Greenman, FreeBSD Project; AUSCERT. Reported in AUSCERT Advisory: AA-97.03 Index: ftpd.c =================================================================== RCS file: /cvsroot/src/libexec/ftpd/ftpd.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** ftpd.c 1995/06/03 22:46:47 1.15 --- ftpd.c 1997/01/23 05:57:55 1.16 *************** *** 1,4 **** ! /* $NetBSD: ftpd.c,v 1.15 1995/06/03 22:46:47 mycroft Exp $ */ /* * Copyright (c) 1985, 1988, 1990, 1992, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ftpd.c,v 1.16 1997/01/23 05:57:55 mrg Exp $ */ /* * Copyright (c) 1985, 1988, 1990, 1992, 1993, 1994 *************** *** 43,49 **** #if 0 static char sccsid[] = "@(#)ftpd.c 8.4 (Berkeley) 4/16/94"; #else ! static char rcsid[] = "$NetBSD: ftpd.c,v 1.15 1995/06/03 22:46:47 mycroft Exp $"; #endif #endif /* not lint */ --- 43,49 ---- #if 0 static char sccsid[] = "@(#)ftpd.c 8.4 (Berkeley) 4/16/94"; #else ! static char rcsid[] = "$NetBSD: ftpd.c,v 1.16 1997/01/23 05:57:55 mrg Exp $"; #endif #endif /* not lint */ *************** *** 1390,1395 **** --- 1390,1400 ---- dologout(status) int status; { + /* + * Prevent reception of SIGURG from resulting in a resumption + * back to the main program loop. + */ + transflag = 0; if (logged_in) { (void) seteuid((uid_t)0);