Package: nagios-nrpe-server
Version: 2.0-7
Severity: important
Tags: patch

When using --no-ssl in nrpe server and running it as daemon the children
all segfault when shutting down.

While it doesn't stop nrpe server from working it floods the kernel log
on archs that do log segfaults:

Apr  7 12:14:33 angela kernel: [ 4416.747546] nrpe[17647]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
Apr  7 12:14:33 angela kernel: [ 4416.747905] nrpe[17645]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
Apr  7 12:14:34 angela kernel: [ 4417.810391] nrpe[17655]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
Apr  7 12:14:34 angela kernel: [ 4417.863524] nrpe[17660]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
Apr  7 12:14:34 angela kernel: [ 4417.874868] nrpe[17663]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
Apr  7 12:14:34 angela kernel: [ 4417.990873] nrpe[17674]: segfault at 
0000000000000030 rip 00002ba661114dd1 rsp 00007fffffc45e20 error 4
....


The problem is that nrpe server tries to free SSL contexts even when
they aren't initialized.  Not good.  :)

Please apply:

diff -u nagios-nrpe-2.0/src/nrpe.c nagios-nrpe-2.0/src/nrpe.c
--- nagios-nrpe-2.0/src/nrpe.c
+++ nagios-nrpe-2.0/src/nrpe.c
@@ -765,9 +765,11 @@
                syslog(LOG_ERR,"Could not read request from client, bailing 
out...");
 
 #ifdef HAVE_SSL
-               SSL_shutdown(ssl);
-               SSL_free(ssl);
-               syslog(LOG_INFO,"INFO: SSL Socket Shutdown.\n");
+               if (ssl) {
+                       SSL_shutdown(ssl);
+                       SSL_free(ssl);
+                       syslog(LOG_INFO,"INFO: SSL Socket Shutdown.\n");
+                       }
 #endif
 
                return;
@@ -780,8 +782,10 @@
                syslog(LOG_ERR,"Data packet from client was too short, bailing 
out...");
 
 #ifdef HAVE_SSL
-               SSL_shutdown(ssl);
-               SSL_free(ssl);
+               if (ssl) {
+                       SSL_shutdown(ssl);
+                       SSL_free(ssl);
+                       }
 #endif
 
                return;
@@ -810,8 +814,10 @@
                        }
 
 #ifdef HAVE_SSL
-               SSL_shutdown(ssl);
-               SSL_free(ssl);
+               if (ssl) {
+                       SSL_shutdown(ssl);
+                       SSL_free(ssl);
+                       }
 #endif
 
                return;
@@ -931,8 +937,10 @@
 #endif
 
 #ifdef HAVE_SSL
-       SSL_shutdown(ssl);
-       SSL_free(ssl);
+       if (ssl) {
+               SSL_shutdown(ssl);
+               SSL_free(ssl);
+               }
 #endif
 
        /* log info to syslog facility */
diff -u nagios-nrpe-2.0/debian/changelog nagios-nrpe-2.0/debian/changelog
--- nagios-nrpe-2.0/debian/changelog
+++ nagios-nrpe-2.0/debian/changelog
@@ -1,3 +1,9 @@
+nagios-nrpe (2.0-7.0.0.weasel3) unstable; urgency=low
+
+  * Fix segfault when freeing unused ssl context.
+
+ -- Peter Palfrader <[EMAIL PROTECTED]>  Fri,  7 Apr 2006 11:59:59 +0200
+
 nagios-nrpe (2.0-7.0.0.weasel2) unstable; urgency=low
 
   * Apply my randomness fix patch for nrpe.



-- 
 PGP signed and encrypted  |  .''`.  ** Debian GNU/Linux **
    messages preferred.    | : :' :      The  universal
                           | `. `'      Operating System
 http://www.palfrader.org/ |   `-    http://www.debian.org/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to