summaryrefslogtreecommitdiff
path: root/tempfile.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2016-01-31 02:38:32 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2016-01-31 02:38:32 -0500
commita48ce3f4aa1266d5b8619cf320a703ba4f697854 (patch)
treeb8312cccc35b75b51e0b0e99519460c3e9c2240c /tempfile.cpp
parentbbb74ee011e2b482e1895a513203c11affbac229 (diff)
Refactor API to fix design bug that causes use-after-free on many plugin objects
Diffstat (limited to 'tempfile.cpp')
-rw-r--r--tempfile.cpp24
1 files changed, 9 insertions, 15 deletions
diff --git a/tempfile.cpp b/tempfile.cpp
index 33256c76..b4578f8d 100644
--- a/tempfile.cpp
+++ b/tempfile.cpp
@@ -6,41 +6,35 @@ using namespace std;
TemporaryFile::TemporaryFile()
{
- m_file = BNCreateTemporaryFile();
+ m_object = BNCreateTemporaryFile();
}
TemporaryFile::TemporaryFile(const DataBuffer& contents)
{
- m_file = BNCreateTemporaryFileWithContents(contents.GetBufferObject());
+ m_object = BNCreateTemporaryFileWithContents(contents.GetBufferObject());
}
TemporaryFile::TemporaryFile(const string& contents)
{
DataBuffer buf(contents.c_str(), contents.size());
- m_file = BNCreateTemporaryFileWithContents(buf.GetBufferObject());
+ m_object = BNCreateTemporaryFileWithContents(buf.GetBufferObject());
}
-TemporaryFile::TemporaryFile(BNTemporaryFile* file): m_file(file)
+TemporaryFile::TemporaryFile(BNTemporaryFile* file)
{
-}
-
-
-TemporaryFile::~TemporaryFile()
-{
- if (m_file)
- BNFreeTemporaryFile(m_file);
+ m_object = file;
}
string TemporaryFile::GetPath() const
{
- if (!m_file)
+ if (!m_object)
return string();
- char* str = BNGetTemporaryFilePath(m_file);
+ char* str = BNGetTemporaryFilePath(m_object);
string result = str;
BNFreeString(str);
return result;
@@ -49,7 +43,7 @@ string TemporaryFile::GetPath() const
DataBuffer TemporaryFile::GetContents()
{
- if (!m_file)
+ if (!m_object)
return DataBuffer();
- return DataBuffer(BNGetTemporaryFileContents(m_file));
+ return DataBuffer(BNGetTemporaryFileContents(m_object));
}