From b84383bfe8662e00d5699241097758b6a6e9d421 Mon Sep 17 00:00:00 2001 From: Jon Palmisciano Date: Thu, 7 Oct 2021 12:27:07 -0400 Subject: Add infrastructure for UTF-{16,32} string creation actions LinearView: Update string methods for UTF-{16,32} string quick-creation - Update `makeString` to accept a character size for wide strings - Update `getStringLength` to handle wide strings, add doc comment TypeView, TypeView: Add `charSize` parameter to `makeString` --- ui/flowgraphwidget.h | 2 +- ui/linearview.h | 10 ++++++++-- ui/tokenizedtextview.h | 11 +++++++++-- ui/typeview.h | 2 +- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ui/flowgraphwidget.h b/ui/flowgraphwidget.h index 6a77b829..2064e99b 100644 --- a/ui/flowgraphwidget.h +++ b/ui/flowgraphwidget.h @@ -344,7 +344,7 @@ private Q_SLOTS: void skipAndReturnValue(); void makePtr(); - void makeString(); + void makeString(size_t charSize = 1); void reanalyze(); diff --git a/ui/linearview.h b/ui/linearview.h index d7a4983e..7edf8097 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -264,7 +264,7 @@ private Q_SLOTS: void makeFloat64(); void toggleFloatSize(); void makePtr(); - void makeString(); + void makeString(size_t charSize = 1); void changeType(const UIActionContext& context); void undefineVariable(); void displayAs(const UIActionContext& context, BNIntegerDisplayType displayType) override; @@ -274,7 +274,13 @@ private Q_SLOTS: void createNewTypes(); void autoCreateMembers(); - size_t getStringLength(uint64_t startAddr); + //! Get the length of of the string (if there is one) starting at the + //! given address. String type is assumed to be UTF-8 by default, but the + //! `charSize` parameter can be set to 2 or 4 to look for UTF-16 or + //! UTF-32 string, respectively. + //! + //! Returns the length of the string in bytes, NOT the number of characters. + size_t getStringLength(uint64_t startAddr, size_t charSize = 1); void setInstructionHighlight(BNHighlightColor color); void setBlockHighlight(BNHighlightColor color); diff --git a/ui/tokenizedtextview.h b/ui/tokenizedtextview.h index 699c6caa..6424e6e4 100644 --- a/ui/tokenizedtextview.h +++ b/ui/tokenizedtextview.h @@ -94,11 +94,18 @@ class BINARYNINJAUIAPI TokenizedTextView: public QAbstractScrollArea, public Vie void makeFloat64(); void toggleFloatSize(); void makePtr(); - void makeString(); + void makeString(size_t charSize = 1); void changeType(); void inferStructureType(); void autoCreateMembers(); - size_t getStringLength(uint64_t startAddr); + + //! Get the length of of the string (if there is one) starting at the + //! given address. String type is assumed to be UTF-8 by default, but the + //! `charSize` parameter can be set to 2 or 4 to look for UTF-16 or + //! UTF-32 string, respectively. + //! + //! Returns the length of the string in bytes, NOT the number of characters. + size_t getStringLength(uint64_t startAddr, size_t charSize = 1); void setInstructionHighlight(BNHighlightColor color); void setBlockHighlight(BNHighlightColor color); diff --git a/ui/typeview.h b/ui/typeview.h index 512e2635..c5631a23 100644 --- a/ui/typeview.h +++ b/ui/typeview.h @@ -263,7 +263,7 @@ private Q_SLOTS: void makeInt32(); void makeInt64(); void makePtr(); - void makeString(); + void makeString(size_t charSize = 1); void makeArray(); void newTypes(); void createStructure(); -- cgit v1.3.1