Skip to content

Commit f0b3438

Browse files
committed
Fix memory leak in namespaces
1 parent 09b6de7 commit f0b3438

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

binaryview.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1430,6 +1430,7 @@ Ref<Symbol> BinaryView::GetSymbolByRawName(const string& name, const NameSpace&
14301430
{
14311431
BNNameSpace ns = nameSpace.GetAPIObject();
14321432
BNSymbol* sym = BNGetSymbolByRawName(m_object, name.c_str(), &ns);
1433+
NameSpace::FreeAPIObject(&ns);
14331434
if (!sym)
14341435
return nullptr;
14351436
return new Symbol(sym);
@@ -1441,6 +1442,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsByName(const string& name, const NameS
14411442
size_t count;
14421443
BNNameSpace ns = nameSpace.GetAPIObject();
14431444
BNSymbol** syms = BNGetSymbolsByName(m_object, name.c_str(), &count, &ns);
1445+
NameSpace::FreeAPIObject(&ns);
14441446

14451447
vector<Ref<Symbol>> result;
14461448
result.reserve(count);
@@ -1457,6 +1459,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbols(const NameSpace& nameSpace)
14571459
size_t count;
14581460
BNNameSpace ns = nameSpace.GetAPIObject();
14591461
BNSymbol** syms = BNGetSymbols(m_object, &count, &ns);
1462+
NameSpace::FreeAPIObject(&ns);
14601463

14611464
vector<Ref<Symbol>> result;
14621465
result.reserve(count);
@@ -1473,6 +1476,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbols(uint64_t start, uint64_t len, const N
14731476
size_t count;
14741477
BNNameSpace ns = nameSpace.GetAPIObject();
14751478
BNSymbol** syms = BNGetSymbolsInRange(m_object, start, len, &count, &ns);
1479+
NameSpace::FreeAPIObject(&ns);
14761480

14771481
vector<Ref<Symbol>> result;
14781482
result.reserve(count);
@@ -1489,6 +1493,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type, const NameSp
14891493
size_t count;
14901494
BNNameSpace ns = nameSpace.GetAPIObject();
14911495
BNSymbol** syms = BNGetSymbolsOfType(m_object, type, &count, &ns);
1496+
NameSpace::FreeAPIObject(&ns);
14921497

14931498
vector<Ref<Symbol>> result;
14941499
result.reserve(count);
@@ -1505,6 +1510,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type, uint64_t sta
15051510
size_t count;
15061511
BNNameSpace ns = nameSpace.GetAPIObject();
15071512
BNSymbol** syms = BNGetSymbolsOfTypeInRange(m_object, type, start, len, &count, &ns);
1513+
NameSpace::FreeAPIObject(&ns);
15081514

15091515
vector<Ref<Symbol>> result;
15101516
result.reserve(count);

metadata.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ bool Metadata::GetBoolean() const
112112

113113
string Metadata::GetString() const
114114
{
115-
return BNMetadataGetString(m_object);
115+
char* str = BNMetadataGetString(m_object);
116+
string result = string(str);
117+
BNFreeString(str);
118+
return result;
116119
}
117120

118121
uint64_t Metadata::GetUnsignedInteger() const

0 commit comments

Comments
 (0)