Make DNS callbacks return -1 on error, so invalid records are ignored
authorJames Golovich <james@gnuinter.net>
Wed, 3 Mar 2004 03:12:59 +0000 (03:12 +0000)
committerJames Golovich <james@gnuinter.net>
Wed, 3 Mar 2004 03:12:59 +0000 (03:12 +0000)
(bug #1137)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2311 65c4cc65-6c06-0410-ace0-fbb531ad65f3

dns.c
enum.c
srv.c

diff --git a/dns.c b/dns.c
index 7f86154..3c89c3c 100755 (executable)
--- a/dns.c
+++ b/dns.c
@@ -137,8 +137,10 @@ static int dns_parse_answer(void *context,
 
                if (ntohs(ans->class) == class && ntohs(ans->rtype) == type) {
                        if (callback) {
-                               if ((res = callback(context, answer, ntohs(ans->size), fullanswer)) < 0)
+                               if ((res = callback(context, answer, ntohs(ans->size), fullanswer)) < 0) {
                                        ast_log(LOG_WARNING, "Failed to parse result\n");
+                                       return -1;
+                               }
                                if (res > 0)
                                        return 1;
                        }
diff --git a/enum.c b/enum.c
index cbd007f..48531df 100755 (executable)
--- a/enum.c
+++ b/enum.c
@@ -232,8 +232,10 @@ static int enum_callback(void *context, u_char *answer, int len, u_char *fullans
 {
        struct enum_context *c = (struct enum_context *)context;
 
-       if (parse_naptr(c->dst, c->dstlen, c->tech, c->techlen, answer, len, c->naptrinput))
+       if (parse_naptr(c->dst, c->dstlen, c->tech, c->techlen, answer, len, c->naptrinput)) {
                ast_log(LOG_WARNING, "Failed to parse naptr :(\n");
+               return -1;
+       }
 
        if (strlen(c->dst))
                return 1;
diff --git a/srv.c b/srv.c
index c49abbf..299d3ee 100755 (executable)
--- a/srv.c
+++ b/srv.c
@@ -79,8 +79,10 @@ static int srv_callback(void *context, u_char *answer, int len, u_char *fullansw
 {
        struct srv_context *c = (struct srv_context *)context;
 
-       if (parse_srv(c->host, c->hostlen, c->port, answer, len, fullanswer))
+       if (parse_srv(c->host, c->hostlen, c->port, answer, len, fullanswer)) {
                ast_log(LOG_WARNING, "Failed to parse srv\n");
+               return -1;
+       }
 
        if (strlen(c->host))
                return 1;