From 157b197fe50dd83050f17f72ec039e176ff7a4e6 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Thu, 5 Jan 2012 15:19:21 +0100 Subject: [PATCH] patches: Removed bts595756-notify_email-segfault -- included upstream. --- debian/changelog | 4 +- debian/patches/00list | 1 - .../bts595756-notify_email-segfault.dpatch | 140 ------------------ 3 files changed, 3 insertions(+), 142 deletions(-) delete mode 100755 debian/patches/bts595756-notify_email-segfault.dpatch diff --git a/debian/changelog b/debian/changelog index fc6b338..8714cf2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -19,8 +19,10 @@ collectd (4.10.4-1) unstable; urgency=low - Depend on libmodbus-dev (which is now available in Debian) and enabled "modbus" plugin; thanks to Ivo De Decker for reporting this (Closes: #639796). + * debian/patches: + - Removed bts595756-notify_email-segfault -- included upstream. - -- Sebastian Harl Thu, 05 Jan 2012 15:15:21 +0100 + -- Sebastian Harl Thu, 05 Jan 2012 15:19:02 +0100 collectd (4.10.1-2.1) unstable; urgency=high diff --git a/debian/patches/00list b/debian/patches/00list index 87049dd..10dc8e3 100644 --- a/debian/patches/00list +++ b/debian/patches/00list @@ -1,7 +1,6 @@ rrd_filter_path.dpatch collection_conf_path.dpatch bts559801_plugin_find_fix.dpatch -bts595756-notify_email-segfault.dpatch bts592623-curl_json-file.dpatch bts596128-reheap-fix.dpatch CVE-2010-4336.dpatch diff --git a/debian/patches/bts595756-notify_email-segfault.dpatch b/debian/patches/bts595756-notify_email-segfault.dpatch deleted file mode 100755 index 1373b4e..0000000 --- a/debian/patches/bts595756-notify_email-segfault.dpatch +++ /dev/null @@ -1,140 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## bts595756-notify_email-segfault.dpatch -## by Florian Forster -## -## DP: notify_email plugin: Serialize all accesses to libesmtp using a mutex. -## DP: -## DP: libesmtp is not thread-safe. This fixes segfaults when accessing the -## DP: plugin in parallel. - -@DPATCH@ - -diff a/src/notify_email.c b/src/notify_email.c ---- a/src/notify_email.c -+++ b/src/notify_email.c -@@ -1,6 +1,7 @@ - /** - * collectd - src/notify_email.c - * Copyright (C) 2008 Oleg King -+ * Copyright (C) 2010 Florian Forster - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the -@@ -18,6 +19,7 @@ - * - * Authors: - * Oleg King -+ * Florian Forster - **/ - - #include "collectd.h" -@@ -26,6 +28,7 @@ - - #include - #include -+#include - - #define MAXSTRING 256 - -@@ -45,6 +48,7 @@ static char **recipients; - static int recipients_len = 0; - - static smtp_session_t session; -+static pthread_mutex_t session_lock = PTHREAD_MUTEX_INITIALIZER; - static smtp_message_t message; - static auth_context_t authctx = NULL; - -@@ -113,17 +117,23 @@ static int notify_email_init (void) - { - char server[MAXSTRING]; - -+ ssnprintf(server, sizeof (server), "%s:%i", -+ (smtp_host == NULL) ? DEFAULT_SMTP_HOST : smtp_host, -+ smtp_port); -+ -+ pthread_mutex_lock (&session_lock); -+ - auth_client_init(); -- if (!(session = smtp_create_session ())) { -+ -+ session = smtp_create_session (); -+ if (session == NULL) { -+ pthread_mutex_unlock (&session_lock); - ERROR ("notify_email plugin: cannot create SMTP session"); - return (-1); - } - - smtp_set_monitorcb (session, monitor_cb, NULL, 1); - smtp_set_hostname (session, hostname_g); -- ssnprintf(server, sizeof (server), "%s:%i", -- (smtp_host == NULL) ? DEFAULT_SMTP_HOST : smtp_host, -- smtp_port); - smtp_set_server (session, server); - - if (smtp_user && smtp_password) { -@@ -133,18 +143,30 @@ static int notify_email_init (void) - } - - if ( !smtp_auth_set_context (session, authctx)) { -+ pthread_mutex_unlock (&session_lock); - ERROR ("notify_email plugin: cannot set SMTP auth context"); - return (-1); - } - -+ pthread_mutex_unlock (&session_lock); - return (0); - } /* int notify_email_init */ - - static int notify_email_shutdown (void) - { -- smtp_destroy_session (session); -- auth_destroy_context (authctx); -+ pthread_mutex_lock (&session_lock); -+ -+ if (session != NULL) -+ smtp_destroy_session (session); -+ session = NULL; -+ -+ if (authctx != NULL) -+ auth_destroy_context (authctx); -+ authctx = NULL; -+ - auth_client_exit(); -+ -+ pthread_mutex_unlock (&session_lock); - return (0); - } /* int notify_email_shutdown */ - -@@ -248,7 +270,16 @@ static int notify_email_notification (const notification_t *n, - n->host, - n->message); - -+ pthread_mutex_lock (&session_lock); -+ -+ if (session == NULL) { -+ /* Initialization failed or we're in the process of shutting down. */ -+ pthread_mutex_unlock (&session_lock); -+ return (-1); -+ } -+ - if (!(message = smtp_add_message (session))) { -+ pthread_mutex_unlock (&session_lock); - ERROR ("notify_email plugin: cannot set SMTP message"); - return (-1); - } -@@ -264,6 +295,7 @@ static int notify_email_notification (const notification_t *n, - char buf[MAXSTRING]; - ERROR ("notify_email plugin: SMTP server problem: %s", - smtp_strerror (smtp_errno (), buf, sizeof buf)); -+ pthread_mutex_unlock (&session_lock); - return (-1); - } else { - const smtp_status_t *status; -@@ -274,6 +306,7 @@ static int notify_email_notification (const notification_t *n, - smtp_enumerate_recipients (message, print_recipient_status, NULL); - } - -+ pthread_mutex_unlock (&session_lock); - return (0); - } /* int notify_email_notification */ - -- 2.30.2