From: Jeffrey Altman Date: Sat, 10 Dec 2011 18:28:17 +0000 (-0500) Subject: Windows: memory leak when setting tokens via smb X-Git-Tag: upstream/1.8.0_pre1^2~2955 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=f30d70ba5575753302be0a2b08c27a639898d4aa;p=packages%2Fo%2Fopenafs.git 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 --- 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)) {