diff --git a/daemon/remote.c b/daemon/remote.c index d89ecd165..f27111fee 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1581,6 +1581,9 @@ do_flush_type(RES* ssl, struct worker* worker, char* arg) if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) return; t = sldns_get_rr_type_by_name(arg2); + if(t == 0 && strcmp(arg2, "TYPE0") != 0) { + return 0; + } do_cache_remove(worker, nm, nmlen, t, LDNS_RR_CLASS_IN); free(nm); diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 130324a1f..55ea2d922 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -746,7 +746,7 @@ sldns_get_rr_class_by_name(const char *name) if (strlen(name) > 5 && strncasecmp(name, "CLASS", 5) == 0) { unsigned int a = atoi(name + 5); if (a > LDNS_RR_TYPE_LAST) { - return (enum sldns_enum_rr_type)0; + return (enum sldns_enum_rr_class)0; } return a; } diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 64af699bc..2ee3be8e5 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -229,6 +229,10 @@ make_query(char* qname, char* qtype, char* qclass) qinfo.qtype = sldns_get_rr_type_by_name(qtype); qinfo.qclass = sldns_get_rr_class_by_name(qclass); + if((qinfo.qtype == 0 && strcmp(qtype, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(qclass, "CLASS0") != 0)) { + return 0; + } qinfo.local_alias = NULL; qinfo_query_encode(buf, &qinfo); /* flips buffer */ diff --git a/testcode/perf.c b/testcode/perf.c index 7fb524e22..5a4b39491 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -458,9 +458,17 @@ qlist_parse_line(sldns_buffer* buf, char* p) if(strcmp(tp, "IN") == 0 || strcmp(tp, "CH") == 0) { qinfo.qtype = sldns_get_rr_type_by_name(cl); qinfo.qclass = sldns_get_rr_class_by_name(tp); + if((qinfo.qtype == 0 && strcmp(cl, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(tp, "CLASS0") != 0)) { + return 0; + } } else { qinfo.qtype = sldns_get_rr_type_by_name(tp); qinfo.qclass = sldns_get_rr_class_by_name(cl); + if((qinfo.qtype == 0 && strcmp(tp, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(cl, "CLASS0") != 0)) { + return 0; + } } if(fl[0] == '+') rec = 1; else if(fl[0] == '-') rec = 0; diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index b2c0d5328..5e54894a6 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -133,6 +133,10 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, /* qtype and qclass */ qinfo.qtype = sldns_get_rr_type_by_name(strtype); qinfo.qclass = sldns_get_rr_class_by_name(strclass); + if((qinfo.qtype == 0 && strcmp(strtype, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(strclass, "CLASS0") != 0)) { + return 0; + } /* clear local alias */ qinfo.local_alias = NULL;