From: Michael Weiser Date: Wed, 14 Dec 2016 13:36:37 +0000 (+0100) Subject: Some selective const goodness for tsig X-Git-Tag: release-1.7.0~2^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e7b7c11ba7f1fe1694cf2b2b16e2cc07d6e34f4;p=thirdparty%2Fldns.git Some selective const goodness for tsig Add some consts where the interface does not take ownership of the parameter itself, e.g. if it's copied internally or just stored as is and never free()'d. This avoids annoying casts when the user program handles those static strings as consts as well. --- diff --git a/ldns/resolver.h b/ldns/resolver.h index a0370abf..84128dfe 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -312,21 +312,24 @@ size_t ldns_resolver_nameserver_rtt(const ldns_resolver *r, size_t pos); /** * Return the tsig keyname as used by the nameserver * \param[in] r the resolver - * \return the name used. + * \return the name used. Still owned by the resolver - change using + * ldns_resolver_set_tsig_keyname(). */ -char *ldns_resolver_tsig_keyname(const ldns_resolver *r); +const char *ldns_resolver_tsig_keyname(const ldns_resolver *r); /** * Return the tsig algorithm as used by the nameserver * \param[in] r the resolver - * \return the algorithm used. + * \return the algorithm used. Still owned by the resolver - change using + * ldns_resolver_set_tsig_algorithm(). */ -char *ldns_resolver_tsig_algorithm(const ldns_resolver *r); +const char *ldns_resolver_tsig_algorithm(const ldns_resolver *r); /** * Return the tsig keydata as used by the nameserver * \param[in] r the resolver - * \return the keydata used. + * \return the keydata used. Still owned by the resolver - change using + * ldns_resolver_set_tsig_keydata(). */ -char *ldns_resolver_tsig_keydata(const ldns_resolver *r); +const char *ldns_resolver_tsig_keydata(const ldns_resolver *r); /** * pop the last nameserver from the resolver. * \param[in] r the resolver @@ -521,23 +524,23 @@ void ldns_resolver_set_edns_udp_size(ldns_resolver *r, uint16_t s); /** * Set the tsig key name * \param[in] r the resolver - * \param[in] tsig_keyname the tsig key name + * \param[in] tsig_keyname the tsig key name (copied into resolver) */ -void ldns_resolver_set_tsig_keyname(ldns_resolver *r, char *tsig_keyname); +void ldns_resolver_set_tsig_keyname(ldns_resolver *r, const char *tsig_keyname); /** * Set the tsig algorithm * \param[in] r the resolver - * \param[in] tsig_algorithm the tsig algorithm + * \param[in] tsig_algorithm the tsig algorithm (copied into resolver) */ -void ldns_resolver_set_tsig_algorithm(ldns_resolver *r, char *tsig_algorithm); +void ldns_resolver_set_tsig_algorithm(ldns_resolver *r, const char *tsig_algorithm); /** * Set the tsig key data * \param[in] r the resolver - * \param[in] tsig_keydata the key data + * \param[in] tsig_keydata the key data (copied into resolver) */ -void ldns_resolver_set_tsig_keydata(ldns_resolver *r, char *tsig_keydata); +void ldns_resolver_set_tsig_keydata(ldns_resolver *r, const char *tsig_keydata); /** * Set round trip time for all nameservers. Note this currently diff --git a/ldns/tsig.h b/ldns/tsig.h index 0936da93..bba06ea1 100644 --- a/ldns/tsig.h +++ b/ldns/tsig.h @@ -25,15 +25,15 @@ extern "C" { */ typedef struct ldns_tsig_credentials_struct { - char *algorithm; - char *keyname; - char *keydata; + const char *algorithm; + const char *keyname; + const char *keydata; /* XXX More eventually. */ } ldns_tsig_credentials; -char *ldns_tsig_algorithm(const ldns_tsig_credentials *); -char *ldns_tsig_keyname(const ldns_tsig_credentials *); -char *ldns_tsig_keydata(const ldns_tsig_credentials *); +const char *ldns_tsig_algorithm(const ldns_tsig_credentials *); +const char *ldns_tsig_keyname(const ldns_tsig_credentials *); +const char *ldns_tsig_keydata(const ldns_tsig_credentials *); char *ldns_tsig_keyname_clone(const ldns_tsig_credentials *); char *ldns_tsig_keydata_clone(const ldns_tsig_credentials *); diff --git a/resolver.c b/resolver.c index e09b577f..79f50258 100644 --- a/resolver.c +++ b/resolver.c @@ -203,19 +203,19 @@ ldns_resolver_timeout(const ldns_resolver *r) return r->_timeout; } -char * +const char * ldns_resolver_tsig_keyname(const ldns_resolver *r) { return r->_tsig_keyname; } -char * +const char * ldns_resolver_tsig_algorithm(const ldns_resolver *r) { return r->_tsig_algorithm; } -char * +const char * ldns_resolver_tsig_keydata(const ldns_resolver *r) { return r->_tsig_keydata; @@ -577,21 +577,21 @@ ldns_resolver_push_searchlist(ldns_resolver *r, ldns_rdf *d) } void -ldns_resolver_set_tsig_keyname(ldns_resolver *r, char *tsig_keyname) +ldns_resolver_set_tsig_keyname(ldns_resolver *r, const char *tsig_keyname) { LDNS_FREE(r->_tsig_keyname); r->_tsig_keyname = strdup(tsig_keyname); } void -ldns_resolver_set_tsig_algorithm(ldns_resolver *r, char *tsig_algorithm) +ldns_resolver_set_tsig_algorithm(ldns_resolver *r, const char *tsig_algorithm) { LDNS_FREE(r->_tsig_algorithm); r->_tsig_algorithm = strdup(tsig_algorithm); } void -ldns_resolver_set_tsig_keydata(ldns_resolver *r, char *tsig_keydata) +ldns_resolver_set_tsig_keydata(ldns_resolver *r, const char *tsig_keydata) { LDNS_FREE(r->_tsig_keydata); r->_tsig_keydata = strdup(tsig_keydata); diff --git a/tsig.c b/tsig.c index 08d50f71..62776f06 100644 --- a/tsig.c +++ b/tsig.c @@ -18,19 +18,19 @@ #include #endif /* HAVE_SSL */ -char * +const char * ldns_tsig_algorithm(const ldns_tsig_credentials *tc) { return tc->algorithm; } -char * +const char * ldns_tsig_keyname(const ldns_tsig_credentials *tc) { return tc->keyname; } -char * +const char * ldns_tsig_keydata(const ldns_tsig_credentials *tc) { return tc->keydata;