From 275e73b94897dabcbccc07645d45b6a6cc797ab2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Atte=20Heikkil=C3=A4?= <atteh.mailbox@gmail.com>
Date: Sat, 15 Oct 2022 23:42:43 +0300
Subject: [PATCH] ksmbd-tools: fix host lookup leak in
 srvsvc_share_get_info_invoke()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Before doing a host lookup in srvsvc_share_get_info_invoke(), the host
name is converted to ASCII lowercase through g_ascii_strdown(). This is
unneeded since host lookup does not work. When share->hosts_allow_map
and share->hosts_deny_map are non-NULL, they are always empty since
parse_list() only supports lists of users. Additionally, the allocation
done by g_ascii_strdown() is leaked. Remove the lowercase conversion.
If host lookup should work in the future, ASCII lowercase conversion
can be done at lookup time.

Signed-off-by: Atte Heikkilä <atteh.mailbox@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
---
 mountd/rpc_srvsvc.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/mountd/rpc_srvsvc.c b/mountd/rpc_srvsvc.c
index 322e6bed45ea..450ccaf8b433 100644
--- a/mountd/rpc_srvsvc.c
+++ b/mountd/rpc_srvsvc.c
@@ -186,15 +186,11 @@ static int srvsvc_share_get_info_invoke(struct ksmbd_rpc_pipe *pipe,
 		put_ksmbd_share(share);
 		return 0;
 	}
-
-	if (ret != 0) {
-		gchar *server_name = g_ascii_strdown(STR_VAL(hdr->server_name),
-				strlen(STR_VAL(hdr->server_name)));
-
+	if (ret) {
 		ret = shm_lookup_hosts_map(share,
 					   KSMBD_SHARE_HOSTS_DENY_MAP,
-					   server_name);
-		if (ret == 0) {
+					   STR_VAL(hdr->server_name));
+		if (!ret) {
 			put_ksmbd_share(share);
 			return 0;
 		}
-- 
2.25.1

