From f8c8d65cc176fe779f5483223e5e8387303e1a8f Mon Sep 17 00:00:00 2001 From: Stilez Date: Wed, 6 Mar 2013 19:05:00 +0000 Subject: Fix issue in version_compare that can cause versions to be wrongly marked incompatible --- etc/inc/pfsense-utils.inc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'etc/inc/pfsense-utils.inc') diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index f619fc8..b759987 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -1926,7 +1926,8 @@ function version_get_string_value($a) { 5 => "C", 6 => "D", 7 => "RC", - 8 => "RELEASE" + 8 => "RELEASE", + 9 => "*" // Matches all release levels ); $major = 0; $minor = 0; @@ -1942,7 +1943,12 @@ function version_get_string_value($a) { return "{$major}.{$minor}"; } function version_compare_string($a, $b) { - return version_compare_numeric(version_get_string_value($a), version_get_string_value($b)); + // Only compare string parts if both versions give a specific release + // (If either version lacks a string part, assume intended to match all release levels) + if (isset($a) && isset($b)) + return version_compare_numeric(version_get_string_value($a), version_get_string_value($b)); + else + return 0; } function version_compare_numeric($a, $b) { $a_arr = explode('.', rtrim($a, '.0')); -- cgit v1.1