Sfoglia il codice sorgente

Merge branch 'master' of ssh://git.sip-router.org/sip-router

* 'master' of ssh://git.sip-router.org/sip-router:
  resolve.c: make dns query only on name that has valid syntax
Peter Dunkley 13 anni fa
parent
commit
558e5294f6
1 ha cambiato i file con 14 aggiunte e 2 eliminazioni
  1. 14 2
      resolve.c

+ 14 - 2
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;