From: Daniel Salzman Date: Thu, 14 Nov 2024 07:46:17 +0000 (+0100) Subject: libknot: add knot_dname_with_null() X-Git-Tag: v3.5.0~212^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82c3dbbbcbb6613838ab1a42bc427071461a6ea2;p=thirdparty%2Fknot-dns.git libknot: add knot_dname_with_null() --- diff --git a/distro/pkg/deb/libknot15.symbols b/distro/pkg/deb/libknot15.symbols index cb77329296..682df260c8 100644 --- a/distro/pkg/deb/libknot15.symbols +++ b/distro/pkg/deb/libknot15.symbols @@ -53,6 +53,7 @@ libknot.so.15 libknot15 #MINVER# knot_dname_to_wire@Base 3.4.0 knot_dname_unpack@Base 3.4.0 knot_dname_wire_check@Base 3.4.0 + knot_dname_with_null@Base 3.4.3 knot_dnssec_alg_names@Base 3.4.0 knot_edns_add_option@Base 3.4.0 knot_edns_alignment_size@Base 3.4.0 diff --git a/src/libknot/dname.c b/src/libknot/dname.c index d166f8d397..3cfc5a5570 100644 --- a/src/libknot/dname.c +++ b/src/libknot/dname.c @@ -706,6 +706,17 @@ bool knot_dname_is_case_equal(const knot_dname_t *d1, const knot_dname_t *d2) return dname_is_equal(d1, d2, true); } +_public_ +bool knot_dname_with_null(const knot_dname_t *name) +{ + if (name == NULL) { + return false; + } + + size_t size = knot_dname_size(name); + return (size != strnlen((const char *)name, size) + 1); +} + _public_ size_t knot_dname_prefixlen(const uint8_t *name, unsigned nlabels) { diff --git a/src/libknot/dname.h b/src/libknot/dname.h index 6d72f901b8..47e514c40a 100644 --- a/src/libknot/dname.h +++ b/src/libknot/dname.h @@ -290,6 +290,17 @@ bool knot_dname_is_equal(const knot_dname_t *d1, const knot_dname_t *d2); _pure_ bool knot_dname_is_case_equal(const knot_dname_t *d1, const knot_dname_t *d2); +/*! + * \brief Checks the domain name if it contains '\0' byte within a label. + * + * \param name Domain name. + * + * \retval true if a zero byte is included + * \retval false if a zero byte isn't included + */ +_pure_ +bool knot_dname_with_null(const knot_dname_t *name); + /*! * \brief Count length of the N first labels. *