diff options
Diffstat (limited to 'net/dns_resolver')
-rw-r--r-- | net/dns_resolver/Kconfig | 1 | ||||
-rw-r--r-- | net/dns_resolver/Makefile | 1 | ||||
-rw-r--r-- | net/dns_resolver/dns_query.c | 8 |
3 files changed, 7 insertions, 3 deletions
diff --git a/net/dns_resolver/Kconfig b/net/dns_resolver/Kconfig index 50d49f7e0472..0a1c2238b4bd 100644 --- a/net/dns_resolver/Kconfig +++ b/net/dns_resolver/Kconfig @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-only # # Configuration for DNS Resolver # diff --git a/net/dns_resolver/Makefile b/net/dns_resolver/Makefile index d5c13c2eb36d..877532d662d0 100644 --- a/net/dns_resolver/Makefile +++ b/net/dns_resolver/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-only # # Makefile for the Linux DNS Resolver. # diff --git a/net/dns_resolver/dns_query.c b/net/dns_resolver/dns_query.c index 76338c38738a..2d260432b3be 100644 --- a/net/dns_resolver/dns_query.c +++ b/net/dns_resolver/dns_query.c @@ -54,6 +54,7 @@ * @options: Request options (or NULL if no options) * @_result: Where to place the returned data (or NULL) * @_expiry: Where to store the result expiry time (or NULL) + * @invalidate: Always invalidate the key after use * * The data will be returned in the pointer at *result, if provided, and the * caller is responsible for freeing it. @@ -69,7 +70,8 @@ * Returns the size of the result on success, -ve error code otherwise. */ int dns_query(const char *type, const char *name, size_t namelen, - const char *options, char **_result, time64_t *_expiry) + const char *options, char **_result, time64_t *_expiry, + bool invalidate) { struct key *rkey; struct user_key_payload *upayload; @@ -94,8 +96,6 @@ int dns_query(const char *type, const char *name, size_t namelen, desclen += typelen + 1; } - if (!namelen) - namelen = strnlen(name, 256); if (namelen < 3 || namelen > 255) return -EINVAL; desclen += namelen + 1; @@ -159,6 +159,8 @@ int dns_query(const char *type, const char *name, size_t namelen, ret = len; put: up_read(&rkey->sem); + if (invalidate) + key_invalidate(rkey); key_put(rkey); out: kleave(" = %d", ret); |