]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
parse sldns_get_rr_class_by_name and sldns_get_rr_type_by_name return value 0 909/head
authorheadshog <craaaaaachind@gmail.com>
Wed, 19 Jul 2023 15:09:03 +0000 (18:09 +0300)
committerheadshog <craaaaaachind@gmail.com>
Wed, 19 Jul 2023 15:09:03 +0000 (18:09 +0300)
daemon/remote.c
sldns/rrdef.c
testcode/dohclient.c
testcode/perf.c
testcode/streamtcp.c

index d89ecd16549d59d926e48eff6b760531e79de6c6..f27111fee38af59b3aa147ca5a2c45a0b648d0d3 100644 (file)
@@ -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);
index 130324a1f87ae3cd4bc976c6ca6929832aae3c81..55ea2d922fa58f00362f0ef85904689c94719bc9 100644 (file)
@@ -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;
        }
index 64af699bc718fba00bbb54ba5a1b71c9a5bc904d..2ee3be8e5f571544396020acaa6c7feadf8cc6ed 100644 (file)
@@ -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 */
index 7fb524e22d949c005e73a05d29c09b0ebd087cb5..5a4b3949132f6b46fd624067a370b54ca675ef0f 100644 (file)
@@ -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;
index b2c0d5328bb7e116105e66e544d30eb089a1db3f..5e54894a6e37ad0e5c9ab646e0ba6496399b8a56 100644 (file)
@@ -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;