Edit report at https://bugs.php.net/bug.php?id=68081&edit=1
ID: 68081
Comment by: mabelgoodrich at gmail dot com
Reported by: figureonecpr at gmail dot com
Summary: checkdnsrr( 'example.com' ) returns true when no
MX, only CNAME
Status: Open
Type: Bug
Package: Network related
Operating System: Linux Phoenix 2.6.32
PHP Version: master-Git-2014-09-23 (snap)
Block user comment: N
Private report: N
New Comment:
Yes! Me too.
I quite often visit this https://flirtymania.plus/fr.html platform for having
Previous Comments:
------------------------------------------------------------------------
[2014-09-23 18:44:54] figureonecpr at gmail dot com
Note the dn does the same thing with other RRtypes: treats the existence of a CNAME as a positive
result. This bug cripples the function into unusability.
The example I also posted to the mailing list is that checkdnsrr( 'www.php.net',
'SRV' ) returns true. And you do not have an SRV record (as a Windows guy I
would've been surprised if you did!).
------------------------------------------------------------------------
[2014-09-23 07:19:16] figureonecpr at gmail dot com
You can use
phpbug68081.trueklyn.com
at present.
------------------------------------------------------------------------
[2014-09-23 04:56:15] kriscraig@php.net
Could you include the actual hostname you used? That'll make it easier for me to repro.
Thanks!
--Kris
------------------------------------------------------------------------
[2014-09-23 03:52:26] figureonecpr at gmail dot com
Description:
------------
Per http://php.net/manual/en/function.checkdnsrr.php,
checkdnsrr() defaults to an MX record query when the second argument is not supplied. Regardless of
SMTP's implicit MX logic, this function is supposed to return false if $host does
not have at least one *explicit* MX in the DNS.
However, if the supplied hostname simply has a CNAME record (a good CNAME, one that can be
dereferenced to an extant canonical hostname) the function returns true.
The bug is seen regardless of whether the canonical hostname itself has an MX record. For example,
if you have somehost.example.com CNAME --> example.com A and do checkdnsrr(
'somehost.example.com' ) you will get true. But if you go straight to the
canonical A record and do checkdnsrr( 'example.com' ) you will get false.
Test script:
---------------
// where cname.example.com exists is a CNAME in the DNS pointing to an extant canonical hostname
var_dump( checkdnsrr( 'cname.example.com' ) );
Expected result:
----------------
boolean(false)
Actual result:
--------------
boolean(true)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=68081&edit=1