Refuse to gethostbyname on a pure integer
authorMark Spencer <markster@digium.com>
Tue, 11 May 2004 18:41:09 +0000 (18:41 +0000)
committerMark Spencer <markster@digium.com>
Tue, 11 May 2004 18:41:09 +0000 (18:41 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2949 65c4cc65-6c06-0410-ace0-fbb531ad65f3

utils.c

diff --git a/utils.c b/utils.c
index df06881..1ecbc21 100755 (executable)
--- a/utils.c
+++ b/utils.c
@@ -9,6 +9,7 @@
  * the GNU General Public License
  */
 
+#include <ctype.h>
 #include <asterisk/lock.h>
 #include <asterisk/utils.h>
 
@@ -120,8 +121,20 @@ struct hostent *ast_gethostbyname(const char *host, struct ast_hostent *hp)
 {
        int res;
        int herrno;
+       const char *s;
        struct hostent *result = NULL;
-
+       /* Although it is perfectly legitimate to lookup a pure integer, for
+          the sake of the sanity of people who like to name their peers as
+          integers, we break with tradition and refuse to look up a
+          pure integer */
+       s = host;
+       while(s && *s) {
+               if (!isdigit(*s))
+                       break;
+               s++;
+       }
+       if (!s || !*s)
+               return NULL;
        res = gethostbyname_r(host, &hp->hp, hp->buf, sizeof(hp->buf), &result, &herrno);
 
        if (res || !hp->hp.h_addr_list || !hp->hp.h_addr_list[0])