From 7b6a439efe8a077bf333a9badde021eb9a54b227 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Mon, 21 Jan 2008 13:18:38 +0100 Subject: util_sock: Fix memcache bug in get_mydnsfullname. get_mydnsfullname relied on memcache_add(); memcache_lookup() working. When run from ntlm_auth, the global_cache variable in memcache is NULL, so the add and lookup both fail. In that case, just return the result of the getaddrinfo call. Jeremy, please check. (This used to be commit 1db41ff52565e9f336a22fb9ffd80d51677e023b) --- source3/lib/util_sock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source3/lib/util_sock.c') diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 10428113ae..f524d0d826 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -2080,14 +2080,14 @@ const char *get_mydnsfullname(void) data_blob_string_const("get_mydnsfullname"), data_blob_string_const(res->ai_canonname)); - freeaddrinfo(res); - if (!memcache_lookup(NULL, SINGLETON_CACHE, data_blob_string_const("get_mydnsfullname"), &tmp)) { - return NULL; + tmp = data_blob_string_const(res->ai_canonname); } + freeaddrinfo(res); + return (const char *)tmp.data; } -- cgit From 36e3e75e0683eb9fd14d8a282d9a2324f01fddf7 Mon Sep 17 00:00:00 2001 From: Kai Blin Date: Mon, 21 Jan 2008 18:01:55 +0100 Subject: util_sock: Don't return a pointer to freed memory. Fix a bug in my bugfix. Thanks to vl for spotting that one. (This used to be commit 24f68b90cca111256a7b03f7062cb57c2b08a0d6) --- source3/lib/util_sock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'source3/lib/util_sock.c') diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index f524d0d826..a3975f6c1f 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -2083,7 +2083,8 @@ const char *get_mydnsfullname(void) if (!memcache_lookup(NULL, SINGLETON_CACHE, data_blob_string_const("get_mydnsfullname"), &tmp)) { - tmp = data_blob_string_const(res->ai_canonname); + tmp = data_blob_talloc(talloc_tos(), res->ai_canonname, + strlen(res->ai_canonname) + 1); } freeaddrinfo(res); -- cgit