From 48e650b90fa157c653a2e3dfc7ed4ab67acd52c5 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Fri, 7 Aug 2009 14:51:01 -0600 Subject: [PATCH] The first Net_DNS entry might be a CNAME, which doesn't have the ptrdname info --- framework/Auth/lib/Horde/Auth.php | 11 +++++++++-- framework/Mime/lib/Horde/Mime/Headers.php | 22 ++++++++++++++++++---- framework/Nls/lib/Horde/Nls.php | 10 ++++++++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/framework/Auth/lib/Horde/Auth.php b/framework/Auth/lib/Horde/Auth.php index e6660e992..9dc34f8b2 100644 --- a/framework/Auth/lib/Horde/Auth.php +++ b/framework/Auth/lib/Horde/Auth.php @@ -705,8 +705,15 @@ class Horde_Auth $resolver = new Net_DNS_Resolver(); $resolver->retry = isset($GLOBALS['conf']['dns']['retry']) ? $GLOBALS['conf']['dns']['retry'] : 1; $resolver->retrans = isset($GLOBALS['conf']['dns']['retrans']) ? $GLOBALS['conf']['dns']['retrans'] : 1; - $response = $resolver->query($host, 'PTR'); - $ptrdname = $response ? $response->answer[0]->ptrdname : $host; + $ptrdname = $host; + if ($response = $resolver->query($host, 'PTR')) { + foreach ($response->answer as $val) { + if (isset($val->ptrdname)) { + $ptrdname = $val->ptrdname; + break; + } + } + } } else { $ptrdname = @gethostbyaddr($host); } diff --git a/framework/Mime/lib/Horde/Mime/Headers.php b/framework/Mime/lib/Horde/Mime/Headers.php index 9cc0e91af..a056019d6 100644 --- a/framework/Mime/lib/Horde/Mime/Headers.php +++ b/framework/Mime/lib/Horde/Mime/Headers.php @@ -163,8 +163,15 @@ class Horde_Mime_Headers $remote_path = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $remote_addr = $remote_path[0]; if ($have_netdns) { - $response = $resolver->query($remote_addr, 'PTR'); - $remote = $response ? $response->answer[0]->ptrdname : $remote_addr; + $remote = $remote_addr; + if ($response = $resolver->query($remote_addr, 'PTR')) { + foreach ($response->answer as $val) { + if (isset($val->ptrdname)) { + $remote = $val->ptrdname; + break; + } + } + } } else { $remote = gethostbyaddr($remote_addr); } @@ -172,8 +179,15 @@ class Horde_Mime_Headers $remote_addr = $_SERVER['REMOTE_ADDR']; if (empty($_SERVER['REMOTE_HOST'])) { if ($have_netdns) { - $response = $resolver->query($remote_addr, 'PTR'); - $remote = $response ? $response->answer[0]->ptrdname : $remote_addr; + $remote = $remote_addr; + if ($response = $resolver->query($remote_addr, 'PTR')) { + foreach ($response->answer as $val) { + if (isset($val->ptrdname)) { + $remote = $val->ptrdname; + break; + } + } + } } else { $remote = gethostbyaddr($remote_addr); } diff --git a/framework/Nls/lib/Horde/Nls.php b/framework/Nls/lib/Horde/Nls.php index 591a3479c..6a0c17c29 100644 --- a/framework/Nls/lib/Horde/Nls.php +++ b/framework/Nls/lib/Horde/Nls.php @@ -496,8 +496,14 @@ class Horde_Nls $resolver = new Net_DNS_Resolver(); $resolver->retry = isset($GLOBALS['conf']['dns']['retry']) ? $GLOBALS['conf']['dns']['retry'] : 1; $resolver->retrans = isset($GLOBALS['conf']['dns']['retrans']) ? $GLOBALS['conf']['dns']['retrans'] : 1; - $response = $resolver->query($host, 'PTR'); - $checkHost = $response ? $response->answer[0]->ptrdname : $host; + if ($response = $resolver->query($host, 'PTR')) { + foreach ($response->answer as $val) { + if (isset($val->ptrdname)) { + $checkHost = $val->ptrdname; + break; + } + } + } } else { $checkHost = @gethostbyaddr($host); } -- 2.11.0