From ab3ada9aacd82356a6e5205f3ae26bbff55524db Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Tue, 24 Mar 2009 02:01:48 -0400 Subject: [PATCH] check_mysql: Fix segfault with old slaves (#2696823 - Oskar Ahner) --- NEWS | 1 + THANKS.in | 1 + plugins/check_mysql.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 164ef9f..4f3a833 100644 --- a/NEWS +++ b/NEWS @@ -28,6 +28,7 @@ This file documents the major additions and syntax changes between releases. Fixed check_http not timing-out on redirects Fixed negate not printing the real timeout in ALRM handler when left to default negate timeout result is now configurable + Fixed segfault in check_mysql with old slaves (#2696823 - Oskar Ahner) 1.4.13 25th Sept 2008 Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen) diff --git a/THANKS.in b/THANKS.in index 7737e17..30bf06c 100644 --- a/THANKS.in +++ b/THANKS.in @@ -248,3 +248,4 @@ Nik Soggia Olli Hauer Richard Edward Horner John Barbuto +Oskar Ahner diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c index 119ce0a..689648e 100644 --- a/plugins/check_mysql.c +++ b/plugins/check_mysql.c @@ -177,13 +177,14 @@ main (int argc, char **argv) continue; } } + if ((slave_io_field < 0) || (slave_sql_field < 0) || (num_fields == 0)) { mysql_free_result (res); mysql_close (&mysql); die (STATE_CRITICAL, "Slave status unavailable\n"); } - snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s Seconds Behind Master: %s", row[slave_io_field], row[slave_sql_field], row[seconds_behind_field]); + snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s Seconds Behind Master: %s", row[slave_io_field], row[slave_sql_field], seconds_behind_field!=-1?row[seconds_behind_field]:"Unknown"); if (strcmp (row[slave_io_field], "Yes") != 0 || strcmp (row[slave_sql_field], "Yes") != 0) { mysql_free_result (res); mysql_close (&mysql); -- 2.30.2