Package: cacti
Version: 0.8.8h+ds1-8
Severity: serious
Justification: breaks usability in valid and supported use case
Tags: pending patch

poller.php calls split() in two places, which is deprecated in PHP 7.
The code in question isn't run by default, but it causes problems when
the administrator configures cacti to poll data at a higher frequency
than the cron job that runs the poller. As the highest cron frequency is
once per minute, one will have to use this feature if higher resolution
is required.

-- System Information:
Debian Release: 9.0
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (200,
'experimental'), (200, 'testing'), (50, 'experimental'), (50,
'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages cacti depends on:
ii  dbconfig-mysql                              2.0.8
ii  debconf [debconf-2.0]                       1.5.60
ii  javascript-common                           11
ii  libapache2-mod-php                          1:7.0+49
ii  libapache2-mod-php7.0 [libapache2-mod-php]  7.0.16-3
ii  libjs-jquery                                3.1.1-2
ii  libjs-jquery-cookie                         11-3
ii  libjs-jquery-jstree                         3.3.3+dfsg1-1
ii  libjs-jquery-ui                             1.12.1+dfsg-4
ii  libjs-jquery-ui-theme-ui-lightness          1.12.1+dfsg-1
ii  libphp-adodb                                5.20.9-1
pn  perl:any                                    <none>
ii  php-cli                                     1:7.0+49
ii  php-mbstring                                1:7.0+49
ii  php-mysql                                   1:7.0+49
ii  php-snmp                                    1:7.0+49
ii  php-xml                                     1:7.0+49
ii  php7.0-cli [php-cli]                        7.0.16-3
ii  php7.0-mbstring [php-mbstring]              7.0.16-3
ii  php7.0-mysql [php-mysqlnd]                  7.0.16-3
ii  php7.0-snmp [php-snmp]                      7.0.16-3
ii  php7.0-xml [php-xml]                        7.0.16-3
ii  rrdtool                                     1.6.0-1+b2
ii  snmp                                        5.7.3+dfsg-1.7
ii  ucf                                         3.0036

Versions of packages cacti recommends:
ii  apache2 [httpd]                             2.4.25-3
ii  iputils-ping                                3:20161105-1
ii  logrotate                                   3.11.0-0.1
ii  mariadb-server-10.1 [virtual-mysql-server]  10.1.22-3

Versions of packages cacti suggests:
ii  moreutils  0.60-1
pn  php-ldap   <none>

-- debconf information:
  cacti/db/dbname: cacti
  cacti/remove-error: abort
  cacti/install-error: abort
  cacti/db/app-user: cacti@localhost
  cacti/upgrade-error: abort
  cacti/database-type: mysql
  cacti/internal/skip-preseed: false
* cacti/webserver: apache2
  cacti/mysql/method: Unix socket
* cacti/mysql/admin-user: root
  cacti/missing-db-package-error: abort
  cacti/dbconfig-reinstall: false
  cacti/internal/reconfiguring: false
  cacti/remote/port:
* cacti/dbconfig-install: true
  cacti/dbconfig-remove: true
  cacti/upgrade-backup: true
  cacti/remote/host: localhost
  cacti/remote/newhost:
  cacti/passwords-do-not-match:
  cacti/dbconfig-upgrade: true
  cacti/purge: false
Description: split() is deprecated in PHP 7, causing the code to fail
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/cacti/+bug/1662027
Bug-Debian: https://bugs.debian.org/
Source: https://github.com/Cacti/cacti/commit/6b5931130770cdfa5baa68c43a913dcabf1c3970

Index: cacti/poller.php
===================================================================
--- cacti.orig/poller.php
+++ cacti/poller.php
@@ -451,11 +451,9 @@ while ($poller_runs_completed < $poller_
 
 		/* sleep the appripriate amount of time */
 		if ($poller_runs_completed < $poller_runs) {
-			list($micro, $seconds) = split(' ', microtime());
-			$plugin_start = $seconds + $micro;
+			$plugin_start = microtime(true);
 			api_plugin_hook('poller_bottom');
-			list($micro, $seconds) = split(' ', microtime());
-			$plugin_end = $seconds + $micro;
+			$plugin_end = microtime(true);
 			if (($sleep_time - ($plugin_end - $plugin_start)) > 0) {
 				usleep(($sleep_time - ($plugin_end - $plugin_start)) * 1000000);
 			}

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to