The first Net_DNS entry might be a CNAME, which doesn't have the ptrdname info
authorMichael M Slusarz <slusarz@curecanti.org>
Fri, 7 Aug 2009 20:51:01 +0000 (14:51 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Fri, 7 Aug 2009 21:47:04 +0000 (15:47 -0600)
framework/Auth/lib/Horde/Auth.php
framework/Mime/lib/Horde/Mime/Headers.php
framework/Nls/lib/Horde/Nls.php

index e6660e9..9dc34f8 100644 (file)
@@ -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);
         }
index 9cc0e91..a056019 100644 (file)
@@ -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);
                 }
index 591a347..6a0c17c 100644 (file)
@@ -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);
             }