]> granicus.if.org Git - php/commitdiff
Fixed bug #73594
authorBruce Weirdan <weirdan@gmail.com>
Fri, 25 Nov 2016 02:14:14 +0000 (04:14 +0200)
committerAnatol Belski <ab@php.net>
Sun, 18 Dec 2016 19:44:33 +0000 (20:44 +0100)
Skip the tests when local resolver does not behave

* Added SKIPIF sections to check local resolver
* Added test to check $authns parameter

ext/standard/dns.c
ext/standard/tests/network/bug73594.phpt [new file with mode: 0644]
ext/standard/tests/network/bug73594a.phpt [new file with mode: 0644]

index de40649e696ce3a339ac9dc4900d0cd9766923ef..6cb518b30199162cae9b1948841c1a4a11a40e3f 100644 (file)
@@ -785,7 +785,7 @@ PHP_FUNCTION(dns_get_record)
        int type, first_query = 1, store_results = 1;
        zend_bool raw = 0;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|lz!z!b",
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|lz/!z/!b",
                        &hostname, &hostname_len, &type_param, &authns, &addtl, &raw) == FAILURE) {
                return;
        }
diff --git a/ext/standard/tests/network/bug73594.phpt b/ext/standard/tests/network/bug73594.phpt
new file mode 100644 (file)
index 0000000..a306836
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+Bug #73594 (dns_get_record() does not populate $additional out parameter)
+--SKIPIF--
+<?php
+if (getenv("SKIP_ONLINE_TESTS")) die("skip test requiring internet connection");
+
+$out = array();
+$ret = 0;
+exec("dig -tmx php.net +noall +additional 2>/dev/null", $out, $ret);
+
+if ($ret != 0) die("skip dig command is not present or failed to run");
+
+// skip empty and header lines
+$out = preg_grep("/^(?!($|;))/", $out);
+
+if (empty($out)) die("skip local resolver does not return additional records");
+?>
+--FILE--
+<?php
+$auth = array();
+$additional = array();
+dns_get_record('php.net', DNS_MX, $auth, $additional);
+var_dump(empty($additional));
+?>
+--EXPECT--
+bool(false)
diff --git a/ext/standard/tests/network/bug73594a.phpt b/ext/standard/tests/network/bug73594a.phpt
new file mode 100644 (file)
index 0000000..a0a08e4
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+Bug #73594 (dns_get_record() does not populate $additional out parameter - $authns parameter)
+--SKIPIF--
+<?php
+if (getenv("SKIP_ONLINE_TESTS")) die("skip test requiring internet connection");
+
+$out = array();
+$ret = 0;
+exec("dig -tmx php.net +noall +authority 2>/dev/null", $out, $ret);
+
+if ($ret != 0) die("skip dig command is not present or failed to run");
+
+// skip empty and header lines
+$out = preg_grep("/^(?!($|;))/", $out);
+
+if (empty($out)) die("skip local resolver does not return authority records");
+?>
+--FILE--
+<?php
+$auth = array();
+dns_get_record('php.net', DNS_MX, $auth);
+var_dump(empty($auth));
+?>
+--EXPECT--
+bool(false)