Skip to content

Commit 2eb0f36

Browse files
committed
Move shared demangler type nodes out of GNU3 and
add MAX_DEMANGLE_NODE_LENGTH
1 parent 7862d28 commit 2eb0f36

7 files changed

Lines changed: 10 additions & 9 deletions

File tree

demangler/gnu3/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ project(demangle_gnu3)
55
file(GLOB SOURCES CONFIGURE_DEPENDS
66
*.cpp
77
*.c
8-
*.h)
8+
*.h
9+
../demangled_type_node.cpp
10+
../demangled_type_node.h)
911

1012
if(DEMO)
1113
add_library(${PROJECT_NAME} STATIC ${SOURCES})

demangler/gnu3/demangle_gnu3.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ using namespace std;
3030

3131

3232
static constexpr size_t MAX_DEMANGLE_NESTING_DEPTH = 1024;
33+
static constexpr size_t MAX_DEMANGLE_NODE_LENGTH = 8192;
3334

3435
static BNTypeClass GetFinalizedTypeClass(const Ref<Type>& type)
3536
{
@@ -343,6 +344,8 @@ string DemangleGNU3Reader::ReadString(size_t count)
343344
{
344345
if (count > Length())
345346
throw DemangleException();
347+
if (count > MAX_DEMANGLE_NODE_LENGTH)
348+
throw DemangleException("Demangled node exceeds maximum length");
346349

347350
const string out = m_data.substr(m_offset, count);
348351
m_offset += count;

demangler/gnu3/demangle_gnu3.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#define _STD_VECTOR std::vector
3636
#endif
3737

38-
#include "demangled_type_node.h"
38+
#include "demangler/demangled_type_node.h"
3939

4040
class DemangleException: public std::exception
4141
{

demangler/msvc/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ file(GLOB SOURCES CONFIGURE_DEPENDS
66
*.cpp
77
*.c
88
*.h
9-
../gnu3/demangled_type_node.cpp
10-
../gnu3/demangled_type_node.h)
9+
../demangled_type_node.cpp
10+
../demangled_type_node.h)
1111

1212
if(DEMO)
1313
add_library(${PROJECT_NAME} STATIC ${SOURCES})

demangler/msvc/demangle_msvc.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@
3636
#define _STD_VECTOR std::vector
3737
#endif
3838

39-
#ifdef BINARYNINJACORE_LIBRARY
40-
#include "demangler/gnu3/demangled_type_node.h"
41-
#else
42-
#include "../gnu3/demangled_type_node.h"
43-
#endif
39+
#include "demangler/demangled_type_node.h"
4440

4541
class DemangleException: public std::exception
4642
{

0 commit comments

Comments
 (0)