Module: sip-router Branch: master Commit: 019ab5e2d6730b764b20a890f9a3b5f9237b6338 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=019ab5e2...
Author: Juha Heinanen jh@tutpro.com Committer: Juha Heinanen jh@tutpro.com Date: Thu Oct 25 19:50:17 2012 +0300
resolve.c: make dns query only on name that has valid syntax
---
resolve.c | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/resolve.c b/resolve.c index 36a2992..faabb96 100644 --- a/resolve.c +++ b/resolve.c @@ -694,7 +694,7 @@ struct rdata* get_record(char* name, int type, int flags) int size; int skip; int qno, answers_no; - int r; + int i, r; static union dns_query buff; unsigned char* p; unsigned char* end; @@ -712,17 +712,29 @@ struct rdata* get_record(char* name, int type, int flags) int search_list_used; int name_len; struct rdata* fullname_rd; + char c; #ifdef USE_DNSSEC val_status_t val_status; #endif
+ name_len=strlen(name); + + for (i = 0; i < name_len; i++) { + c = name[i]; + if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) || + ((c >= '0') && (c <= '9')) || (name[i] == '.') || + (name[i] == '-') || (name[i] == '_')) + continue; + LM_INFO("invalid domain name '%s'\n", name); + return 0; + } + if (cfg_get(core, core_cfg, dns_search_list)==0) { search_list_used=0; name_len=0; } else { search_list_used=1; - name_len=strlen(name); } fullname_rd=0;