From: Jeffrey Altman Date: Wed, 20 Jul 2011 22:31:17 +0000 (-0400) Subject: Windows: do not leak space allocation X-Git-Tag: openafs-devel-1_7_1~247 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=c61f5208f553ed1674d1ae51d6e0f16fcdbba47b Windows: do not leak space allocation smb_ReceiveNTTranCreate leaks a cm_GetSpace allocation on error. Don't do that. Change-Id: I40349826f2ab229961e3c3552f66808775f0a239 Reviewed-on: http://gerrit.openafs.org/5062 Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/smb3.c b/src/WINNT/afsd/smb3.c index 428b316..2dcc708 100644 --- a/src/WINNT/afsd/smb3.c +++ b/src/WINNT/afsd/smb3.c @@ -8406,6 +8406,7 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out createDisp == FILE_OVERWRITE_IF)) { osi_Log0(smb_logp, "NTTranCreate rejecting invalid readDirFlag and createDisp combination"); + cm_FreeSpace(spacep); free(realPathp); return CM_ERROR_INVAL; } @@ -8427,6 +8428,7 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out #else osi_Log0(smb_logp, "NTTranCreate rejecting invalid name."); #endif + cm_FreeSpace(spacep); free(realPathp); return CM_ERROR_BADNTFILENAME; } @@ -8434,6 +8436,7 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out userp = smb_GetUserFromVCP(vcp, inp); if (!userp) { osi_Log1(smb_logp, "NTTranCreate invalid user [%d]", ((smb_t *) inp)->uid); + cm_FreeSpace(spacep); free(realPathp); return CM_ERROR_INVAL; } @@ -8450,6 +8453,7 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out */ osi_Log0(smb_logp, "NTTranCreate received IPC TID"); #ifndef DFS_SUPPORT + cm_FreeSpace(spacep); free(realPathp); cm_ReleaseUser(userp); return CM_ERROR_NOSUCHPATH; @@ -8460,12 +8464,14 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out if (!baseFidp) { osi_Log2(smb_logp, "NTTranCreate Unknown SMB Fid vcp 0x%p fid %d", vcp, baseFid); + cm_FreeSpace(spacep); free(realPathp); cm_ReleaseUser(userp); return CM_ERROR_BADFD; } if (baseFidp->scp && (baseFidp->scp->flags & CM_SCACHEFLAG_DELETED)) { + cm_FreeSpace(spacep); free(realPathp); cm_ReleaseUser(userp); smb_CloseFID(vcp, baseFidp, NULL, 0); @@ -8513,6 +8519,7 @@ long smb_ReceiveNTTranCreate(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *out int pnc = cm_VolStatus_Notify_DFS_Mapping(dscp, tidPathp, spacep->wdata); cm_ReleaseSCache(dscp); cm_ReleaseUser(userp); + cm_FreeSpace(spacep); free(realPathp); if (baseFidp) smb_ReleaseFID(baseFidp);