diff options
author | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-03 03:12:59 +0000 |
---|---|---|
committer | citats <citats@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-03-03 03:12:59 +0000 |
commit | 0a96ddcf480c98b32ce03b03fcdeef0c4f467e6d (patch) | |
tree | 8f577d0cdf725a2005a717e8946d82be97606aab | |
parent | 15053dac45e009b1474e6619333ae1039ee0afcf (diff) |
Make DNS callbacks return -1 on error, so invalid records are ignored
(bug #1137)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2311 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | dns.c | 4 | ||||
-rwxr-xr-x | enum.c | 4 | ||||
-rwxr-xr-x | srv.c | 4 |
3 files changed, 9 insertions, 3 deletions
@@ -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; } @@ -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; @@ -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; |