Bug #68081 [Com]: checkdnsrr( 'example.com' ) returns `true` when no MX, only CNAME

From: Date: Sat, 23 Oct 2021 09:57:25 +0000
Subject: Bug #68081 [Com]: checkdnsrr( 'example.com' ) returns `true` when no MX, only CNAME
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-237338@lists.php.net to get a copy of this message
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


Thread (9 messages)

« previous php.bugs (#237338) next »