Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/perfused Survive if filesystem installs a signal ha...



details:   https://anonhg.NetBSD.org/src/rev/fce641680f35
branches:  trunk
changeset: 805010:fce641680f35
user:      manu <manu%NetBSD.org@localhost>
date:      Fri Dec 12 09:58:39 2014 +0000

description:
Survive if filesystem installs a signal handler

We tested for signal(3) to return 0 for success, which is incorrect:
signal(3) returns the previous handler. Success should be tested as
!= SIG_ERR, otherwise we fail when a signal handler was previously
installed by perfused(8) parrent process, which happens to be the
FUSE filesystem.

diffstat:

 usr.sbin/perfused/perfused.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (27 lines):

diff -r 7a2429a59b1a -r fce641680f35 usr.sbin/perfused/perfused.c
--- a/usr.sbin/perfused/perfused.c      Fri Dec 12 07:21:28 2014 +0000
+++ b/usr.sbin/perfused/perfused.c      Fri Dec 12 09:58:39 2014 +0000
@@ -1,4 +1,4 @@
-/*  $NetBSD: perfused.c,v 1.24 2012/07/21 05:49:42 manu Exp $ */
+/*  $NetBSD: perfused.c,v 1.25 2014/12/12 09:58:39 manu Exp $ */
 
 /*-
  *  Copyright (c) 2010 Emmanuel Dreyfus. All rights reserved.
@@ -298,7 +298,7 @@
                     "could not open \"%s\"",
                     _PATH_VAR_RUN_PERFUSE_TRACE);
 
-       if (signal(SIGUSR1, sigusr1_handler) != 0)
+       if (signal(SIGUSR1, sigusr1_handler) == SIG_ERR)
                DERR(EX_OSERR, "signal failed");
 
        /*
@@ -399,7 +399,7 @@
                        perfuse_diagflags |= parse_debug(optarg);
                        break;
                case 's':
-                       if (signal(SIGINFO, siginfo_handler) != 0)
+                       if (signal(SIGINFO, siginfo_handler) == SIG_ERR)
                                DERR(EX_OSERR, "signal failed");
                        break;
                case 'f':



Home | Main Index | Thread Index | Old Index