Skip to content

Commit a35e07c

Browse files
committed
Merge remote-tracking branch 'origin/dev' into test_homegrown_powerpc_vle
2 parents 9e01fa4 + 979515f commit a35e07c

File tree

18 files changed

+366
-87
lines changed

18 files changed

+366
-87
lines changed

binaryninjacore.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7138,7 +7138,7 @@ extern "C"
71387138
BINARYNINJACOREAPI void BNUnregisterScriptingInstanceOutputListener(
71397139
BNScriptingInstance* instance, BNScriptingOutputListener* callbacks);
71407140

7141-
BINARYNINJACOREAPI const char* BNGetScriptingInstanceDelimiters(BNScriptingInstance* instance);
7141+
BINARYNINJACOREAPI char* BNGetScriptingInstanceDelimiters(BNScriptingInstance* instance);
71427142
BINARYNINJACOREAPI void BNSetScriptingInstanceDelimiters(BNScriptingInstance* instance, const char* delimiters);
71437143

71447144
BINARYNINJACOREAPI BNScriptingProviderInputReadyState BNGetScriptingInstanceInputReadyState(
@@ -8310,12 +8310,12 @@ extern "C"
83108310
BINARYNINJACOREAPI bool BNFirmwareNinjaRelationshipGetSecondaryAddress(BNFirmwareNinjaRelationship* rel, uint64_t* result);
83118311
BINARYNINJACOREAPI bool BNFirmwareNinjaRelationshipGetSecondaryDataVariable(BNFirmwareNinjaRelationship* rel, BNDataVariable* dataVariable);
83128312
BINARYNINJACOREAPI BNFunction* BNFirmwareNinjaRelationshipGetSecondaryFunction(BNFirmwareNinjaRelationship* rel);
8313-
BINARYNINJACOREAPI const char* BNFirmwareNinjaRelationshipGetSecondaryExternalSymbol(BNFirmwareNinjaRelationship* rel);
8313+
BINARYNINJACOREAPI char* BNFirmwareNinjaRelationshipGetSecondaryExternalSymbol(BNFirmwareNinjaRelationship* rel);
83148314
BINARYNINJACOREAPI void BNFirmwareNinjaRelationshipSetDescription(BNFirmwareNinjaRelationship* rel, const char* description);
8315-
BINARYNINJACOREAPI const char* BNFirmwareNinjaRelationshipGetDescription(BNFirmwareNinjaRelationship* rel);
8315+
BINARYNINJACOREAPI char* BNFirmwareNinjaRelationshipGetDescription(BNFirmwareNinjaRelationship* rel);
83168316
BINARYNINJACOREAPI void BNFirmwareNinjaRelationshipSetProvenance(BNFirmwareNinjaRelationship* rel, const char* provenance);
8317-
BINARYNINJACOREAPI const char* BNFirmwareNinjaRelationshipGetProvenance(BNFirmwareNinjaRelationship* rel);
8318-
BINARYNINJACOREAPI const char* BNFirmwareNinjaRelationshipGetGuid(BNFirmwareNinjaRelationship* rel);
8317+
BINARYNINJACOREAPI char* BNFirmwareNinjaRelationshipGetProvenance(BNFirmwareNinjaRelationship* rel);
8318+
BINARYNINJACOREAPI char* BNFirmwareNinjaRelationshipGetGuid(BNFirmwareNinjaRelationship* rel);
83198319

83208320
// Line formatters
83218321
BINARYNINJACOREAPI BNLineFormatter* BNRegisterLineFormatter(const char* name, BNCustomLineFormatter* callbacks);

binaryview.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,10 @@ void TagType::SetName(const std::string& name)
939939

940940
std::string TagType::GetIcon() const
941941
{
942-
return BNTagTypeGetIcon(m_object);
942+
char* str = BNTagTypeGetIcon(m_object);
943+
string result = str;
944+
BNFreeString(str);
945+
return result;
943946
}
944947

945948

@@ -1002,7 +1005,10 @@ Ref<TagType> Tag::GetType() const
10021005

10031006
std::string Tag::GetData() const
10041007
{
1005-
return BNTagGetData(m_object);
1008+
char* str = BNTagGetData(m_object);
1009+
string result = str;
1010+
BNFreeString(str);
1011+
return result;
10061012
}
10071013

10081014

@@ -1278,13 +1284,19 @@ uint64_t Section::GetEntrySize() const
12781284

12791285
std::string Section::GetLinkedSection() const
12801286
{
1281-
return BNSectionGetLinkedSection(m_object);
1287+
char* str = BNSectionGetLinkedSection(m_object);
1288+
string result = str;
1289+
BNFreeString(str);
1290+
return result;
12821291
}
12831292

12841293

12851294
std::string Section::GetInfoSection() const
12861295
{
1287-
return BNSectionGetInfoSection(m_object);
1296+
char* str = BNSectionGetInfoSection(m_object);
1297+
string result = str;
1298+
BNFreeString(str);
1299+
return result;
12881300
}
12891301

12901302

firmwareninja.cpp

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,11 @@ Ref<Function> FirmwareNinjaRelationship::GetSecondaryFunction() const
251251

252252
std::string FirmwareNinjaRelationship::GetSecondaryExternalSymbol() const
253253
{
254-
std::string result = "";
255254
auto bnSymbol = BNFirmwareNinjaRelationshipGetSecondaryExternalSymbol(m_object);
256-
if (bnSymbol)
257-
result = std::string(bnSymbol);
258-
255+
if (!bnSymbol)
256+
return "";
257+
std::string result = bnSymbol;
258+
BNFreeString(bnSymbol);
259259
return result;
260260
}
261261

@@ -268,11 +268,11 @@ void FirmwareNinjaRelationship::SetDescription(const std::string& description)
268268

269269
std::string FirmwareNinjaRelationship::GetDescription() const
270270
{
271-
std::string result = "";
272271
auto bnDescription = BNFirmwareNinjaRelationshipGetDescription(m_object);
273-
if (bnDescription)
274-
result = std::string(bnDescription);
275-
272+
if (!bnDescription)
273+
return "";
274+
std::string result = bnDescription;
275+
BNFreeString(bnDescription);
276276
return result;
277277
}
278278

@@ -285,18 +285,23 @@ void FirmwareNinjaRelationship::SetProvenance(const std::string& provenance)
285285

286286
std::string FirmwareNinjaRelationship::GetProvenance() const
287287
{
288-
std::string result = "";
289288
auto bnProvenance = BNFirmwareNinjaRelationshipGetProvenance(m_object);
290-
if (bnProvenance)
291-
result = std::string(bnProvenance);
292-
289+
if (!bnProvenance)
290+
return "";
291+
std::string result = bnProvenance;
292+
BNFreeString(bnProvenance);
293293
return result;
294294
}
295295

296296

297297
std::string FirmwareNinjaRelationship::GetGuid() const
298298
{
299-
return BNFirmwareNinjaRelationshipGetGuid(m_object);
299+
auto bnGuid = BNFirmwareNinjaRelationshipGetGuid(m_object);
300+
if (!bnGuid)
301+
return "";
302+
std::string result = bnGuid;
303+
BNFreeString(bnGuid);
304+
return result;
300305
}
301306

302307

plugins/dwarf/dwarfdump/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ use binaryninja::{
2020
};
2121
use dwarfreader::is_valid;
2222

23-
use binaryninja::disassembly::StringType;
2423
use gimli::{
2524
AttributeValue::{Encoding, Flag, UnitRef},
2625
// BigEndian,
@@ -33,6 +32,7 @@ use gimli::{
3332
Unit,
3433
UnitSectionOffset,
3534
};
35+
use binaryninja::binary_view::StringType;
3636

3737
static PADDING: [&str; 23] = [
3838
"",

plugins/pdb-ng/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ impl PDBParser {
538538

539539
impl CustomDebugInfoParser for PDBParser {
540540
fn is_valid(&self, view: &BinaryView) -> bool {
541-
view.type_name() == "PE" || is_pdb(view)
541+
view.view_type() == "PE" || is_pdb(view)
542542
}
543543

544544
fn parse_info(

python/binaryview.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2998,15 +2998,13 @@ def llil_basic_blocks(self) -> Generator['lowlevelil.LowLevelILBasicBlock', None
29982998
def mlil_basic_blocks(self) -> Generator['mediumlevelil.MediumLevelILBasicBlock', None, None]:
29992999
"""A generator of all MediumLevelILBasicBlock objects in the BinaryView"""
30003000
for func in self.mlil_functions():
3001-
if func is not None:
3002-
yield from func.basic_blocks
3001+
yield from func.basic_blocks
30033002

30043003
@property
30053004
def hlil_basic_blocks(self) -> Generator['highlevelil.HighLevelILBasicBlock', None, None]:
30063005
"""A generator of all HighLevelILBasicBlock objects in the BinaryView"""
30073006
for func in self.hlil_functions():
3008-
if func is not None:
3009-
yield from func.basic_blocks
3007+
yield from func.basic_blocks
30103008

30113009
@property
30123010
def instructions(self) -> InstructionsType:
@@ -3195,7 +3193,9 @@ def mlil_functions(
31953193
for func in AdvancedILFunctionList(
31963194
self, self.preload_limit if preload_limit is None else preload_limit, function_generator
31973195
):
3198-
yield func.mlil
3196+
mlil = func.mlil
3197+
if mlil is not None:
3198+
yield mlil
31993199

32003200
def hlil_functions(
32013201
self, preload_limit: Optional[int] = None,
@@ -3208,7 +3208,9 @@ def hlil_functions(
32083208
for func in AdvancedILFunctionList(
32093209
self, self.preload_limit if preload_limit is None else preload_limit, function_generator
32103210
):
3211-
yield func.hlil
3211+
hlil = func.hlil
3212+
if hlil is not None:
3213+
yield hlil
32123214

32133215
@property
32143216
def has_functions(self) -> bool:

python/function.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,13 +1549,21 @@ def comment(self, comment: str) -> None:
15491549
@property
15501550
def llil_basic_blocks(self) -> Generator['lowlevelil.LowLevelILBasicBlock', None, None]:
15511551
"""A generator of all LowLevelILBasicBlock objects in the current function"""
1552-
for block in self.llil:
1552+
llil = self.llil
1553+
if llil is None:
1554+
return
1555+
1556+
for block in llil:
15531557
yield block
15541558

15551559
@property
15561560
def mlil_basic_blocks(self) -> Generator['mediumlevelil.MediumLevelILBasicBlock', None, None]:
15571561
"""A generator of all MediumLevelILBasicBlock objects in the current function"""
1558-
for block in self.mlil:
1562+
mlil = self.mlil
1563+
if mlil is None:
1564+
return
1565+
1566+
for block in mlil:
15591567
yield block
15601568

15611569
@property
@@ -1883,6 +1891,10 @@ def get_llils_at(self, addr: int,
18831891
>>> func.get_llils_at(func.start)
18841892
[<il: push(rbp)>]
18851893
"""
1894+
llil = self.llil
1895+
if llil is None:
1896+
return []
1897+
18861898
if arch is None:
18871899
arch = self.arch
18881900
count = ctypes.c_ulonglong()
@@ -1891,7 +1903,7 @@ def get_llils_at(self, addr: int,
18911903
try:
18921904
result = []
18931905
for i in range(0, count.value):
1894-
result.append(self.llil[instrs[i]])
1906+
result.append(llil[instrs[i]])
18951907
return result
18961908
finally:
18971909
core.BNFreeILInstructionList(instrs)

rust/src/basic_block.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub struct Edge<'a, C: 'a + BlockContext> {
3030
pub branch: BranchType,
3131
pub back_edge: bool,
3232
pub source: Guard<'a, BasicBlock<C>>,
33-
target: Guard<'a, BasicBlock<C>>,
33+
pub target: Guard<'a, BasicBlock<C>>,
3434
}
3535

3636
impl<'a, C: 'a + fmt::Debug + BlockContext> fmt::Debug for Edge<'a, C> {

0 commit comments

Comments
 (0)