summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2018-03-07 18:10:55 -0500
committerPeter LaFosse <peter@vector35.com>2018-03-23 17:10:06 -0400
commit4563e6343c47722cb2b026b5fe8303125c97020c (patch)
tree9855e97a3572c41af9f07f27e6b12eb1f117bf5d /binaryview.cpp
parentc183be59f14f6a672bc3eb3cab82851c43bec55a (diff)
Add APIs for skipping analysis of functions that are too large, and overriding this behavior
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 96fd161d..0dcf6bc3 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -78,6 +78,15 @@ void BinaryDataNotification::FunctionUpdatedCallback(void* ctxt, BNBinaryView* o
}
+void BinaryDataNotification::FunctionUpdateRequestedCallback(void* ctxt, BNBinaryView* object, BNFunction* func)
+{
+ BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
+ Ref<Function> funcObj = new Function(BNNewFunctionReference(func));
+ notify->OnAnalysisFunctionUpdateRequested(view, funcObj);
+}
+
+
void BinaryDataNotification::DataVariableAddedCallback(void* ctxt, BNBinaryView* object, BNDataVariable* var)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
@@ -148,6 +157,7 @@ BinaryDataNotification::BinaryDataNotification()
m_callbacks.functionAdded = FunctionAddedCallback;
m_callbacks.functionRemoved = FunctionRemovedCallback;
m_callbacks.functionUpdated = FunctionUpdatedCallback;
+ m_callbacks.functionUpdateRequested = FunctionUpdateRequestedCallback;
m_callbacks.dataVariableAdded = DataVariableAddedCallback;
m_callbacks.dataVariableRemoved = DataVariableRemovedCallback;
m_callbacks.dataVariableUpdated = DataVariableUpdatedCallback;
@@ -1949,6 +1959,19 @@ uint64_t BinaryView::GetUIntMetadata(const string& key)
return data->GetUnsignedInteger();
}
+
+uint64_t BinaryView::GetMaxFunctionSizeForAnalysis()
+{
+ return BNGetMaxFunctionSizeForAnalysis(m_object);
+}
+
+
+void BinaryView::SetMaxFunctionSizeForAnalysis(uint64_t size)
+{
+ BNSetMaxFunctionSizeForAnalysis(m_object, size);
+}
+
+
BinaryData::BinaryData(FileMetadata* file): BinaryView(BNCreateBinaryDataView(file->GetObject()))
{
}