From 5b7faca7dba21c86a9bcbeed37565990963d2ade Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 20 Jul 2023 11:42:05 +0200 Subject: [PATCH] For #909: Numeric truncation when parsing TYPEXX and CLASSXX representation - Fix return values. - Formatting nits. --- daemon/remote.c | 2 +- testcode/dohclient.c | 11 +++++++---- testcode/perf.c | 4 ++-- testcode/streamtcp.c | 10 +++++++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index f27111fee..c7bfa4e12 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1582,7 +1582,7 @@ do_flush_type(RES* ssl, struct worker* worker, char* arg) return; t = sldns_get_rr_type_by_name(arg2); if(t == 0 && strcmp(arg2, "TYPE0") != 0) { - return 0; + return; } do_cache_remove(worker, nm, nmlen, t, LDNS_RR_CLASS_IN); diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 2ee3be8e5..de9f39d7d 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -226,12 +226,15 @@ make_query(char* qname, char* qtype, char* qclass) printf("cannot parse query name: '%s'\n", qname); exit(1); } - qinfo.qtype = sldns_get_rr_type_by_name(qtype); + if(qinfo.qtype == 0 && strcmp(qtype, "TYPE0") != 0) { + printf("cannot parse query type: '%s'\n", qtype); + exit(1); + } 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; + if(qinfo.qclass == 0 && strcmp(qclass, "CLASS0") != 0) { + printf("cannot parse query class: '%s'\n", qclass); + exit(1); } qinfo.local_alias = NULL; diff --git a/testcode/perf.c b/testcode/perf.c index 5a4b39491..2be86c4bf 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -459,14 +459,14 @@ qlist_parse_line(sldns_buffer* buf, char* p) 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)) { + (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)) { + (qinfo.qclass == 0 && strcmp(cl, "CLASS0") != 0)) { return 0; } } diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 5e54894a6..4eee14187 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -132,10 +132,14 @@ 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); + if(qinfo.qtype == 0 && strcmp(strtype, "TYPE0") != 0) { + printf("cannot parse query type: '%s'\n", strtype); + exit(1); + } 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; + if(qinfo.qclass == 0 && strcmp(strclass, "CLASS0") != 0) { + printf("cannot parse query class: '%s'\n", strclass); + exit(1); } /* clear local alias */