From f30d70ba5575753302be0a2b08c27a639898d4aa 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. Change-Id: I28261643680d608d5c8805e095650a751193ab6d Reviewed-on: http://gerrit.openafs.org/6244 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- 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 0c6313ab0..c43137494 100644 --- a/src/WINNT/afsd/smb_ioctl.c +++ b/src/WINNT/afsd/smb_ioctl.c @@ -1091,11 +1091,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