diff options
Diffstat (limited to 'src/resolve')
-rw-r--r-- | src/resolve/resolved-dns-dnssec.c | 23 | ||||
-rw-r--r-- | src/resolve/resolved-dns-rr.h | 6 | ||||
-rw-r--r-- | src/resolve/resolved-dns-trust-anchor.c | 8 | ||||
-rw-r--r-- | src/resolve/resolved-mdns.c | 40 |
4 files changed, 30 insertions, 47 deletions
diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c index 2c8514a72a..86a9a58c5b 100644 --- a/src/resolve/resolved-dns-dnssec.c +++ b/src/resolve/resolved-dns-dnssec.c @@ -114,32 +114,25 @@ int dnssec_canonicalize(const char *n, char *buffer, size_t buffer_max) { #if HAVE_GCRYPT -static int rr_compare(const void *a, const void *b) { - DnsResourceRecord **x = (DnsResourceRecord**) a, **y = (DnsResourceRecord**) b; +static int rr_compare(DnsResourceRecord * const *a, DnsResourceRecord * const *b) { + const DnsResourceRecord *x = *a, *y = *b; size_t m; int r; /* Let's order the RRs according to RFC 4034, Section 6.3 */ assert(x); - assert(*x); - assert((*x)->wire_format); + assert(x->wire_format); assert(y); - assert(*y); - assert((*y)->wire_format); + assert(y->wire_format); - m = MIN(DNS_RESOURCE_RECORD_RDATA_SIZE(*x), DNS_RESOURCE_RECORD_RDATA_SIZE(*y)); + m = MIN(DNS_RESOURCE_RECORD_RDATA_SIZE(x), DNS_RESOURCE_RECORD_RDATA_SIZE(y)); - r = memcmp(DNS_RESOURCE_RECORD_RDATA(*x), DNS_RESOURCE_RECORD_RDATA(*y), m); + r = memcmp(DNS_RESOURCE_RECORD_RDATA(x), DNS_RESOURCE_RECORD_RDATA(y), m); if (r != 0) return r; - if (DNS_RESOURCE_RECORD_RDATA_SIZE(*x) < DNS_RESOURCE_RECORD_RDATA_SIZE(*y)) - return -1; - else if (DNS_RESOURCE_RECORD_RDATA_SIZE(*x) > DNS_RESOURCE_RECORD_RDATA_SIZE(*y)) - return 1; - - return 0; + return CMP(DNS_RESOURCE_RECORD_RDATA_SIZE(x), DNS_RESOURCE_RECORD_RDATA_SIZE(y)); } static int dnssec_rsa_verify_raw( @@ -806,7 +799,7 @@ int dnssec_verify_rrset( return -ENODATA; /* Bring the RRs into canonical order */ - qsort_safe(list, n, sizeof(DnsResourceRecord*), rr_compare); + typesafe_qsort(list, n, rr_compare); f = open_memstream(&sig_data, &sig_size); if (!f) diff --git a/src/resolve/resolved-dns-rr.h b/src/resolve/resolved-dns-rr.h index 83acf3b880..d5e74e4937 100644 --- a/src/resolve/resolved-dns-rr.h +++ b/src/resolve/resolved-dns-rr.h @@ -244,7 +244,7 @@ struct DnsResourceRecord { }; }; -static inline const void* DNS_RESOURCE_RECORD_RDATA(DnsResourceRecord *rr) { +static inline const void* DNS_RESOURCE_RECORD_RDATA(const DnsResourceRecord *rr) { if (!rr) return NULL; @@ -255,7 +255,7 @@ static inline const void* DNS_RESOURCE_RECORD_RDATA(DnsResourceRecord *rr) { return (uint8_t*) rr->wire_format + rr->wire_format_rdata_offset; } -static inline size_t DNS_RESOURCE_RECORD_RDATA_SIZE(DnsResourceRecord *rr) { +static inline size_t DNS_RESOURCE_RECORD_RDATA_SIZE(const DnsResourceRecord *rr) { if (!rr) return 0; if (!rr->wire_format) @@ -265,7 +265,7 @@ static inline size_t DNS_RESOURCE_RECORD_RDATA_SIZE(DnsResourceRecord *rr) { return rr->wire_format_size - rr->wire_format_rdata_offset; } -static inline uint8_t DNS_RESOURCE_RECORD_OPT_VERSION_SUPPORTED(DnsResourceRecord *rr) { +static inline uint8_t DNS_RESOURCE_RECORD_OPT_VERSION_SUPPORTED(const DnsResourceRecord *rr) { assert(rr); assert(rr->key->type == DNS_TYPE_OPT); diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c index bf5b07cdd3..dc6b746189 100644 --- a/src/resolve/resolved-dns-trust-anchor.c +++ b/src/resolve/resolved-dns-trust-anchor.c @@ -464,10 +464,8 @@ static int dns_trust_anchor_load_files( return 0; } -static int domain_name_cmp(const void *a, const void *b) { - char **x = (char**) a, **y = (char**) b; - - return dns_name_compare_func(*x, *y); +static int domain_name_cmp(char * const *a, char * const *b) { + return dns_name_compare_func(*a, *b); } static int dns_trust_anchor_dump(DnsTrustAnchor *d) { @@ -497,7 +495,7 @@ static int dns_trust_anchor_dump(DnsTrustAnchor *d) { if (!l) return log_oom(); - qsort_safe(l, set_size(d->negative_by_name), sizeof(char*), domain_name_cmp); + typesafe_qsort(l, set_size(d->negative_by_name), domain_name_cmp); j = strv_join(l, " "); if (!j) diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c index 71a30ae8f8..e70138181a 100644 --- a/src/resolve/resolved-mdns.c +++ b/src/resolve/resolved-mdns.c @@ -53,50 +53,41 @@ eaddrinuse: return 0; } -static int mdns_rr_compare(const void *a, const void *b) { - DnsResourceRecord **x = (DnsResourceRecord**) a, **y = (DnsResourceRecord**) b; +static int mdns_rr_compare(DnsResourceRecord * const *a, DnsResourceRecord * const *b) { + DnsResourceRecord *x = *(DnsResourceRecord **) a, *y = *(DnsResourceRecord **) b; size_t m; int r; assert(x); - assert(*x); assert(y); - assert(*y); - if (CLEAR_CACHE_FLUSH((*x)->key->class) < CLEAR_CACHE_FLUSH((*y)->key->class)) - return -1; - else if (CLEAR_CACHE_FLUSH((*x)->key->class) > CLEAR_CACHE_FLUSH((*y)->key->class)) - return 1; + r = CMP(CLEAR_CACHE_FLUSH(x->key->class), CLEAR_CACHE_FLUSH(y->key->class)); + if (r != 0) + return r; - if ((*x)->key->type < (*y)->key->type) - return -1; - else if ((*x)->key->type > (*y)->key->type) - return 1; + r = CMP(x->key->type, y->key->type); + if (r != 0) + return r; - r = dns_resource_record_to_wire_format(*x, false); + r = dns_resource_record_to_wire_format(x, false); if (r < 0) { log_warning_errno(r, "Can't wire-format RR: %m"); return 0; } - r = dns_resource_record_to_wire_format(*y, false); + r = dns_resource_record_to_wire_format(y, false); if (r < 0) { log_warning_errno(r, "Can't wire-format RR: %m"); return 0; } - m = MIN(DNS_RESOURCE_RECORD_RDATA_SIZE(*x), DNS_RESOURCE_RECORD_RDATA_SIZE(*y)); + m = MIN(DNS_RESOURCE_RECORD_RDATA_SIZE(x), DNS_RESOURCE_RECORD_RDATA_SIZE(y)); - r = memcmp(DNS_RESOURCE_RECORD_RDATA(*x), DNS_RESOURCE_RECORD_RDATA(*y), m); + r = memcmp(DNS_RESOURCE_RECORD_RDATA(x), DNS_RESOURCE_RECORD_RDATA(y), m); if (r != 0) return r; - if (DNS_RESOURCE_RECORD_RDATA_SIZE(*x) < DNS_RESOURCE_RECORD_RDATA_SIZE(*y)) - return -1; - else if (DNS_RESOURCE_RECORD_RDATA_SIZE(*x) > DNS_RESOURCE_RECORD_RDATA_SIZE(*y)) - return 1; - - return 0; + return CMP(DNS_RESOURCE_RECORD_RDATA_SIZE(x), DNS_RESOURCE_RECORD_RDATA_SIZE(y)); } static int proposed_rrs_cmp(DnsResourceRecord **x, unsigned x_size, DnsResourceRecord **y, unsigned y_size) { @@ -151,7 +142,7 @@ static int mdns_packet_extract_matching_rrs(DnsPacket *p, DnsResourceKey *key, D list[n++] = p->answer->items[i].rr; } assert(n == size); - qsort_safe(list, size, sizeof(DnsResourceRecord*), mdns_rr_compare); + typesafe_qsort(list, size, mdns_rr_compare); *ret_rrs = TAKE_PTR(list); @@ -171,7 +162,8 @@ static int mdns_do_tiebreak(DnsResourceKey *key, DnsAnswer *answer, DnsPacket *p DNS_ANSWER_FOREACH(rr, answer) our[i++] = rr; - qsort_safe(our, size, sizeof(DnsResourceRecord*), mdns_rr_compare); + + typesafe_qsort(our, size, mdns_rr_compare); r = mdns_packet_extract_matching_rrs(p, key, &remote); if (r < 0) |