diff --git a/libMEDSannotation/include/MEDS_FuncAnnotation.hpp b/libMEDSannotation/include/MEDS_FuncAnnotation.hpp index c2c246ff7319c20cdc34baebc0bae764b50759dc..e4dc9347c531c14729f85d769f56b08bc729a5eb 100644 --- a/libMEDSannotation/include/MEDS_FuncAnnotation.hpp +++ b/libMEDSannotation/include/MEDS_FuncAnnotation.hpp @@ -37,7 +37,7 @@ using namespace std; using namespace MEDS_Annotation; // -// Class to handle one MEDS (integer vulnerability) annotation +// Class to handle one MEDS annotation // class MEDS_FuncAnnotation : public MEDS_AnnotationBase { @@ -50,8 +50,16 @@ class MEDS_FuncAnnotation : public MEDS_AnnotationBase virtual string getFuncName() const { return m_func_name; } virtual void setFuncName(const string &p_func_name) { m_func_name=p_func_name; } + virtual bool isLeaf() const { return m_isleaf; } + virtual void setLeaf(const bool p_leaf) { m_isleaf = p_leaf; } + + virtual bool hasFramePointer() const { return m_hasfp; } + virtual void setHasFramePointer(const bool p_hasfp) { m_hasfp = p_hasfp; } + private: string m_func_name; + bool m_isleaf; + bool m_hasfp; }; } diff --git a/libMEDSannotation/src/MEDS_SafeFuncAnnotation.cpp b/libMEDSannotation/src/MEDS_SafeFuncAnnotation.cpp index b5ad37b3f113d1dd454eaaf1edeafe657488d103..de7af940b984d1d2daf2694bdaf419f9c962f5d2 100644 --- a/libMEDSannotation/src/MEDS_SafeFuncAnnotation.cpp +++ b/libMEDSannotation/src/MEDS_SafeFuncAnnotation.cpp @@ -39,6 +39,8 @@ MEDS_SafeFuncAnnotation::MEDS_SafeFuncAnnotation(const string &p_rawLine) { init(); m_rawInputLine=p_rawLine; + setLeaf(false); + setHasFramePointer(true); parse(); } @@ -104,5 +106,27 @@ void MEDS_SafeFuncAnnotation::parse() markUnsafe(); // sets valid } + if (m_rawInputLine.find(" FUNC_LEAF ")!=string::npos) + { + if(getenv("VERBOSE")) + cout<<"Found FUNC_LEAF for "<<vo.to_string()<<endl; + setLeaf(true); + } + else + { + setLeaf(false); + } + + if (m_rawInputLine.find(" NOFP ")!=string::npos) + { + if(getenv("VERBOSE")) + cout<<"Found NOFP (no frame pointer) for "<<vo.to_string()<<endl; + setHasFramePointer(false); + } + else + { + setHasFramePointer(true); + } + } diff --git a/libcapstone b/libcapstone index 4f05e83334ec6a10e1ed93018affe9091a576f84..bfa649ff1a0ed3807f94ac2d5690c5c3108cc75f 160000 --- a/libcapstone +++ b/libcapstone @@ -1 +1 @@ -Subproject commit 4f05e83334ec6a10e1ed93018affe9091a576f84 +Subproject commit bfa649ff1a0ed3807f94ac2d5690c5c3108cc75f