summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2023-01-24 18:38:13 -0700
committerRusty Wagner <rusty.wagner@gmail.com>2023-01-30 11:57:43 -0500
commita3939bdec15f9299ae9a681255fa93c47113870a (patch)
tree2b4bb5643ac3cd25a618a99a542968fe81c66bcc /binaryninjacore.h
parentcf4220570c2d1b7105fb29719383f64026d46837 (diff)
Fix UAF on C++ BinaryView plugin init, improve demangler and BinaryView APIs
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index c3c1546f..f76ae881 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -36,14 +36,14 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 30
+#define BN_CURRENT_CORE_ABI_VERSION 31
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
// will require rebuilding. The minimum version is increased when there are
// incompatible changes that break binary compatibility, such as changes to
// existing types or functions.
-#define BN_MINIMUM_CORE_ABI_VERSION 30
+#define BN_MINIMUM_CORE_ABI_VERSION 31
#ifdef __GNUC__
#ifdef BINARYNINJACORE_LIBRARY
@@ -257,6 +257,7 @@ extern "C"
struct BNDebugInfoParser;
struct BNSecretsProvider;
struct BNLogger;
+ struct BNSymbolQueue;
//! Console log levels
@@ -3537,6 +3538,8 @@ extern "C"
BINARYNINJACOREAPI uint64_t BNGetReaderPosition(BNBinaryReader* stream);
BINARYNINJACOREAPI void BNSeekBinaryReader(BNBinaryReader* stream, uint64_t offset);
BINARYNINJACOREAPI void BNSeekBinaryReaderRelative(BNBinaryReader* stream, int64_t offset);
+ BINARYNINJACOREAPI uint64_t BNGetBinaryReaderVirtualBase(BNBinaryReader* stream);
+ BINARYNINJACOREAPI void BNSetBinaryReaderVirtualBase(BNBinaryReader* stream, uint64_t base);
BINARYNINJACOREAPI bool BNIsEndOfFile(BNBinaryReader* stream);
// Stream writer object
@@ -3708,9 +3711,10 @@ extern "C"
const uint8_t* data, uint64_t addr, size_t length, const BNLowLevelILFunction* il, BNRelocation* relocation);
// Analysis
BINARYNINJACOREAPI void BNAddAnalysisOption(BNBinaryView* view, const char* name);
- BINARYNINJACOREAPI void BNAddFunctionForAnalysis(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
+ BINARYNINJACOREAPI BNFunction* BNAddFunctionForAnalysis(
+ BNBinaryView* view, BNPlatform* platform, uint64_t addr, bool autoDiscovered, BNType* type);
BINARYNINJACOREAPI void BNAddEntryPointForAnalysis(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
- BINARYNINJACOREAPI void BNRemoveAnalysisFunction(BNBinaryView* view, BNFunction* func);
+ BINARYNINJACOREAPI void BNRemoveAnalysisFunction(BNBinaryView* view, BNFunction* func, bool updateRefs);
BINARYNINJACOREAPI BNFunction* BNCreateUserFunction(BNBinaryView* view, BNPlatform* platform, uint64_t addr);
BINARYNINJACOREAPI void BNRemoveUserFunction(BNBinaryView* view, BNFunction* func);
BINARYNINJACOREAPI bool BNHasInitialAnalysis(BNBinaryView* view);
@@ -6440,6 +6444,13 @@ extern "C"
BINARYNINJACOREAPI bool BNStoreSecretsProviderData(BNSecretsProvider* provider, const char* key, const char* data);
BINARYNINJACOREAPI bool BNDeleteSecretsProviderData(BNSecretsProvider* provider, const char* key);
+ BINARYNINJACOREAPI BNSymbolQueue* BNCreateSymbolQueue(void);
+ BINARYNINJACOREAPI void BNDestroySymbolQueue(BNSymbolQueue* queue);
+ BINARYNINJACOREAPI void BNAppendSymbolQueue(BNSymbolQueue* queue,
+ void (*resolve)(void* ctxt, BNSymbol** symbol, BNType** type), void* resolveContext,
+ void (*add)(void* ctxt, BNSymbol* symbol, BNType* type), void* addContext);
+ BINARYNINJACOREAPI void BNProcessSymbolQueue(BNSymbolQueue* queue);
+
#ifdef __cplusplus
}
#endif