From 06dc1b57d49903e15506ded00a19fb8cfdc7e836 Mon Sep 17 00:00:00 2001 From: Pawel Dziepak Date: Thu, 20 Jun 2013 15:05:30 +0200 Subject: [PATCH] nfs4: Fix double free when NFS4Inode::ReadDirOnce fails --- src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp b/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp index af9b47d07d..1a3ab1f4a2 100644 --- a/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/NFS4Inode.cpp @@ -1004,18 +1004,16 @@ NFS4Inode::ReadDirOnce(DirEntry** dirents, uint32* count, OpenDirCookie* cookie, ArrayDeleter beforeDeleter(before); result = reply.ReadDir(dirCookie, dirCookieVerf, dirents, count, eof); - if (result != B_OK) { - delete[] before; + if (result != B_OK) return result; - } + ArrayDeleter entriesDeleter(*dirents); AttrValue* after; result = reply.GetAttr(&after, &attrCount); - if (result != B_OK) { - delete[] before; + if (result != B_OK) return result; - } + ArrayDeleter afterDeleter(after); if ((*change == 0