From 881ba096d2849707c26a7e0bd14d536a79fd5cc1 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 10 Dec 2011 13:28:17 -0500 Subject: [PATCH] Windows: memory leak when setting tokens via smb The SID string of the RPC used to set the token sessionKey was being leaked. Be sure to free it when it is no longer required. Reviewed-on: http://gerrit.openafs.org/6244 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit f30d70ba5575753302be0a2b08c27a639898d4aa) Change-Id: I1133b50841919ca5957081c82625c2b1607c34ae Reviewed-on: http://gerrit.openafs.org/6815 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/WINNT/afsd/smb_ioctl.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/WINNT/afsd/smb_ioctl.c b/src/WINNT/afsd/smb_ioctl.c index 542b3cf5b..a5be8ebb6 100644 --- a/src/WINNT/afsd/smb_ioctl.c +++ b/src/WINNT/afsd/smb_ioctl.c @@ -1088,11 +1088,14 @@ smb_IoctlSetToken(struct smb_ioctl *ioctlp, struct cm_user *userp, afs_uint32 pf goto done; } - if (!(pflags & AFSCALL_FLAG_LOCAL_SYSTEM) && rpc_sid) { - osi_Log1(smb_logp,"smb_IoctlSetToken Rpc Sid [%S]", - osi_LogSaveClientString(smb_logp, rpc_sid)); - if (!cm_ClientStrCmp(NTSID_LOCAL_SYSTEM, rpc_sid)) - pflags |= AFSCALL_FLAG_LOCAL_SYSTEM; + if (rpc_sid) { + if (!(pflags & AFSCALL_FLAG_LOCAL_SYSTEM)) { + osi_Log1(smb_logp,"smb_IoctlSetToken Rpc Sid [%S]", + osi_LogSaveClientString(smb_logp, rpc_sid)); + if (!cm_ClientStrCmp(NTSID_LOCAL_SYSTEM, rpc_sid)) + pflags |= AFSCALL_FLAG_LOCAL_SYSTEM; + } + LocalFree(rpc_sid); } if (!(pflags & AFSCALL_FLAG_LOCAL_SYSTEM) && (flags & PIOCTL_LOGON)) { -- 2.39.5