File 0001-cifs.upcall-fix-memory-leaks-in-check_service_ticket.patch of Package cifs-utils.41102

From dc013738ec1f2e67598b264fe2eabf94c5a34570 Mon Sep 17 00:00:00 2001
From: Paulo Alcantara <pc@manguebit.com>
Date: Tue, 15 Apr 2025 13:20:52 -0300
Subject: [PATCH] cifs.upcall: fix memory leaks in check_service_ticket_exits()

The error message returned by krb5_get_error_message() must be freed
using krb5_free_error_message().

Fixes: af76bf2a11a0 ("cifs-utils: Skip TGT check if valid service ticket is already available")
Acked-by: Bharath SM <bharathsm@microsoft.com>
Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
---
 cifs.upcall.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/cifs.upcall.c b/cifs.upcall.c
index 678b140..2f7c478 100644
--- a/cifs.upcall.c
+++ b/cifs.upcall.c
@@ -634,33 +634,39 @@ icfk_cleanup:
 #define CIFS_SERVICE_NAME "cifs"
 
 static krb5_error_code check_service_ticket_exists(krb5_ccache ccache,
-		const char *hostname) {
-
-	krb5_error_code rc;
+						   const char *hostname)
+{
 	krb5_creds mcreds, out_creds;
+	const char *errmsg;
+	krb5_error_code rc;
 
 	memset(&mcreds, 0, sizeof(mcreds));
 
 	rc = krb5_cc_get_principal(context, ccache, &mcreds.client);
 	if (rc) {
+		errmsg = krb5_get_error_message(context, rc);
 		syslog(LOG_DEBUG, "%s: unable to get client principal from cache: %s",
-					__func__, krb5_get_error_message(context, rc));
+		       __func__, errmsg);
+		krb5_free_error_message(context, errmsg);
 		return rc;
 	}
 
 	rc = krb5_sname_to_principal(context, hostname, CIFS_SERVICE_NAME,
 			KRB5_NT_UNKNOWN, &mcreds.server);
 	if (rc) {
+		errmsg = krb5_get_error_message(context, rc);
 		syslog(LOG_DEBUG, "%s: unable to convert service name (%s) to principal: %s",
-					__func__, hostname, krb5_get_error_message(context, rc));
+		       __func__, hostname, errmsg);
+		krb5_free_error_message(context, errmsg);
 		krb5_free_principal(context, mcreds.client);
 		return rc;
 	}
 
 	rc = krb5_timeofday(context, &mcreds.times.endtime);
 	if (rc) {
-		syslog(LOG_DEBUG, "%s: unable to get time: %s",
-			__func__, krb5_get_error_message(context, rc));
+		errmsg = krb5_get_error_message(context, rc);
+		syslog(LOG_DEBUG, "%s: unable to get time: %s", __func__, errmsg);
+		krb5_free_error_message(context, errmsg);
 		goto out_free_principal;
 	}
 
-- 
2.50.1

openSUSE Build Service is sponsored by