From mione@boeing.rutgers.edu Tue Mar 24 14:24:00 1998 Received: from MIT.EDU (SOUTH-STATION-ANNEX.MIT.EDU [18.72.1.2]) by rt-11.MIT.EDU (8.7.5/8.7.3) with SMTP id OAA29986 for ; Tue, 24 Mar 1998 14:23:47 -0500 Received: from boeing.rutgers.edu by MIT.EDU with SMTP id AA04220; Tue, 24 Mar 98 14:23:31 EST Received: (from root@localhost) by boeing.rutgers.edu (8.8.5/8.6.12) id OAA16302; Tue, 24 Mar 1998 14:23:23 -0500 (EST) Message-Id: <199803241923.OAA16302@boeing.rutgers.edu> Date: Tue, 24 Mar 1998 14:23:23 -0500 (EST) From: Tony Mione Reply-To: mione@boeing.rutgers.edu To: krb5-bugs@MIT.EDU Subject: kadmind crashes when kadmin user ^c's and quits during long operation. X-Send-Pr-Version: 3.99 >Number: 572 >Category: krb5-admin >Synopsis: kadmind crashes when kadmin user ^c's and quits during long operation. >Confidential: no >Severity: serious >Priority: medium >Responsible: bjaspan >State: open >Class: sw-bug >Submitter-Id: unknown >Arrival-Date: Tue Mar 24 14:24:01 EST 1998 >Last-Modified: >Originator: Tony Mione >Organization: Rutgers University Network Services Tony Mione, RUCS/NS, Rutgers University, Hill 055, Piscataway,NJ - 732-445-0650 mione@nbcs-ns.rutgers.edu W3: http://www-ns.rutgers.edu/~mione/ PGP Fingerprint : E2 25 2C CD 28 73 3C 5B 0B 91 8A 4E 22 BA FA 9F Editorial Advisor for Digital Systems Report ***** Important: John 17:3 ***** >Release: 1.0pl1 >Environment: System: SunOS boeing.rutgers.edu 5.5.1 Generic_103640-05 sun4u sparc SUNW,Ultra-1 Architecture: sun4 >Description: When a kadmin user requests a time-consuming operation (listprincs or getprincs * on a large database), and the types Control-C followed by a quit command, the kadmind for the associated realm dies. This happens due to improper handling of the SIGPIPE signal. The signal is not reset in sig_pipe() from ovsec_kadmd.c. >How-To-Repeat: Create a database with more than 5000 entries. Start the kadmind for that realm. Enter kadmin, authenticate, and type 'listprincs'. Then, before any data is returned, type Control-C and 'quit'. The kadmind on the remote server gets multiple SIGPIPEs and dies. >Fix: Reset the SIGPIPE handler inside of sig_pipe(). The code fix below also resets one other signal inside the signal handler function. *** ovsec_kadmd.c.14 Tue Mar 24 13:44:56 1998 --- ovsec_kadmd.c.current Fri Mar 13 14:29:05 1998 *************** *** 1,11 **** /* * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved * ! * $Header: /rutgers/src/private/krb5-1.0/src/kadmin/server/RCS/ovsec_kadmd.c,v 1.4 1998/01/23 23:56:22 mione Exp $ */ #if !defined(lint) && !defined(__CODECENTER__) ! static char *rcsid = "$Header: /rutgers/src/private/krb5-1.0/src/kadmin/server/RCS/ovsec_kadmd.c,v 1.4 1998/01/23 23:56:22 mione Exp $"; #endif #include --- 1,11 ---- /* * Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved * ! * $Header: /rutgers/src/private/krb5-1.0/src/kadmin/server/RCS/ovsec_kadmd.c,v 1.5 1998/03/11 21:33:31 mione Exp mione $ */ #if !defined(lint) && !defined(__CODECENTER__) ! static char *rcsid = "$Header: /rutgers/src/private/krb5-1.0/src/kadmin/server/RCS/ovsec_kadmd.c,v 1.5 1998/03/11 21:33:31 mione Exp mione $"; #endif #include *************** *** 564,569 **** --- 564,570 ---- void request_exit(int signum) { + signal ( signum, request_exit ); /* Reset signal */ krb5_klog_syslog(LOG_DEBUG, "Got signal to request exit"); signal_request_exit = 1; return; *************** *** 580,585 **** --- 581,587 ---- */ void sig_pipe(int unused) { + signal ( SIGPIPE, sig_pipe ); /* Reset signal */ krb5_klog_syslog(LOG_NOTICE, "Warning: Received a SIGPIPE; probably a " "client aborted. Continuing."); return; >Audit-Trail: >Unformatted: