[Nagiosplug-devel] [ nagiosplug-Patches-2696823 ] check_mysql.c:	Negative value in array
    SourceForge.net 
    noreply at sourceforge.net
       
    Tue Mar 24 07:04:36 CET 2009
    
    
  
Patches item #2696823, was opened at 2009-03-20 04:21
Message generated for change (Comment added) made by dermoth
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=397599&aid=2696823&group_id=29880
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Bugfix
Group: release-1.4.14
>Status: Closed
>Resolution: Fixed
Priority: 5
Private: No
Submitted By: Oskar Ahner (oskara67)
Assigned to: Thomas Guyot-Sionnest (dermoth)
Summary: check_mysql.c: Negative value in array
Initial Comment:
Version: nagios-plugins-1.4.13, file check_mysql.c, version  '2034.
Cause: For mysql-server verson 4.0.29 the column 'Seconds_Behind_Master' does not exist. This causes a segmentation fault when executing.
Description: 
In main() the int 'seconds_behind_field' has the value -1 when accessed in the following statement:
 if ((seconds_behind_field != -1) && (strcmp (row[seconds_behind_field], "NULL") != 0)) {
				double value = atof(row[seconds_behind_field]);
Here is a simple patch:
--- nagios-plugins-1.4.13/plugins/check_mysql.c	2008-08-16 06:47:32.000000000 +0200
+++ nagios-plugins-1.4.13.oskar/plugins/check_mysql.c	2009-03-19 16:50:18.000000000 +0100
@@ -181,13 +181,14 @@
 					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);
Regards,
Oskar
----------------------------------------------------------------------
Comment By: Thomas Guyot-Sionnest (dermoth)
Date: 2009-03-24 02:04
Message:
This problem is now fixed in Git. Thank you for your report.
----------------------------------------------------------------------
Comment By: Thomas Guyot-Sionnest (dermoth)
Date: 2009-03-23 08:09
Message:
Thanks!
Since I don't have old slaves to test with, I tested by commenting out the
code block that look for said line.
I will commit it tonight or tomorrow.
----------------------------------------------------------------------
Comment By: Oskar Ahner (oskara67)
Date: 2009-03-20 04:25
Message:
Sorry, I wrote wrong line, it core dumps when this line is executed,
because 'seconds_behind_value" is -1.
The patch is correct however.
snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s
Seconds Behind Master: %s", r
ow[slave_io_field], row[slave_sql_field], row[seconds_behind_field]);
----------------------------------------------------------------------
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=397599&aid=2696823&group_id=29880
    
    
More information about the Devel
mailing list