]> granicus.if.org Git - php/commitdiff
Fix bug #79944
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 10 Aug 2020 14:53:31 +0000 (16:53 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 10 Aug 2020 18:42:50 +0000 (20:42 +0200)
Only return true from dns_get_mx if we actually found any MX record.

NEWS
ext/standard/dns.c
ext/standard/tests/network/getmxrr.phpt

diff --git a/NEWS b/NEWS
index ec597b415343323fe457fbfac69deba959075451..410b74a89358735f2470daaf91d7914ddcf0b247 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,7 @@ PHP                                                                        NEWS
 - Standard:
   . Fixed bug #79930 (array_merge_recursive() crashes when called with array
     with single reference). (Nikita)
+  . Fixed bug #79944 (getmxrr always returns true on Alpine linux). (Nikita)
 
 - XML:
   . Fixed bug #79922 (Crash after multiple calls to xml_parser_free()). (cmb)
index 705c8e4fad278ec4b1c2f577b23457c4110facfb..56fb83eadeb02e1497fea81074c7736c649cf0b6 100644 (file)
@@ -1114,7 +1114,7 @@ PHP_FUNCTION(dns_get_mx)
                }
        }
        php_dns_free_handle(handle);
-       RETURN_TRUE;
+       RETURN_BOOL(zend_hash_num_elements(Z_ARRVAL_P(weight_list)) != 0);
 }
 /* }}} */
 #endif /* HAVE_FULL_DNS_FUNCS */
index c4a15c52ce4fb4a2ce6c13a1f320815e194f4af5..52228685b08d3ffbb01f757703f923cd5f4255e4 100644 (file)
@@ -10,15 +10,19 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
 ?>
 --FILE--
 <?php
-$domains = array( 'mx1.tests.php.net', 'mx2.tests.php.net' );
-foreach ( $domains as $domain )
-{
-    if ( getmxrr( $domain, $hosts, $weights ) )
-    {
-        echo "Hosts: " . count( $hosts ) . ", weights: " . count( $weights ) . "\n";
-    }
+$domains = array(
+    'mx1.tests.php.net',
+    'mx2.tests.php.net',
+    'qa.php.net',
+);
+foreach ($domains as $domain) {
+    $result = getmxrr($domain, $hosts, $weights);
+    echo "Result: " . ($result ? "true" : "false")
+       . ", hosts: " . count( $hosts )
+       . ", weights: " . count( $weights ) . "\n";
 }
 ?>
 --EXPECT--
-Hosts: 1, weights: 1
-Hosts: 2, weights: 2
+Result: true, hosts: 1, weights: 1
+Result: true, hosts: 2, weights: 2
+Result: false, hosts: 0, weights: 0