diff --git a/.gitignore b/.gitignore index 67677395d9c9d90b2df2eac813dfc7fe58863e1d..5953e4c8526d98cad5047c94aecc4dd65009369c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ irdb-libs/scons_build/ *.os *.so *.exe +.*.swp diff --git a/SConscript b/SConscript index c12088c740153bdbb8d0705b8cac747a321ecfb1..6e244b663482aeba730d7c5dcc592d3c31b171bf 100644 --- a/SConscript +++ b/SConscript @@ -52,7 +52,10 @@ Export('env') # list of zipr plugins and irdb xforms to build transformDirs=''' - irdb_transforms + builtin_xforms/add_lib + builtin_xforms/move_globals + builtin_xforms/p1transform + builtin_xforms/resolve_callbacks zipr_push64_reloc_plugin zipr zipr_unpin_plugin diff --git a/SConstruct b/SConstruct index 524cf2db075cb12a549a7192e1d929c5ea028575..217ce0e12f67963fbec959d67e93856998ab9bf7 100644 --- a/SConstruct +++ b/SConstruct @@ -14,6 +14,7 @@ env.Replace(SHLINKFLAGS="-fPIC -fmax-errors=2 -Wall -Werror -fmax-errors=2 -shar env.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) env.Replace(IRDB_SDK=os.environ['IRDB_SDK']) env.Replace(SMPSA_HOME=os.environ['SMPSA_HOME']) +env.Replace(PEASOUP_HOME=os.environ['PEASOUP_HOME']) env.Replace(debug=ARGUMENTS.get("debug",0)) env.Replace(PEDI_HOME=os.environ['PEDI_HOME']) env.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL']) diff --git a/builtin_xforms/add_lib/SConscript b/builtin_xforms/add_lib/SConscript index 1a15530d26e4a2b733d91125f040353b32380594..4a770b8c1dc03b89c820b01f36153589dab92d1a 100644 --- a/builtin_xforms/add_lib/SConscript +++ b/builtin_xforms/add_lib/SConscript @@ -2,19 +2,25 @@ import os -Import('irdb_env') +Import('env') # import and create a copy of the environment so we don't screw up anyone elses env. -myenv=irdb_env.Clone() +myenv=env.Clone() -cpppath=myenv['IRDB_INC'] files=Glob( Dir('.').srcnode().abspath+"/*.cpp") +cpppath=''' + $IRDB_SDK/include + ''' + +myenv.Append(CPPPATH=Split(cpppath)) + + + pgm="add_lib.exe" LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-elfdep irdb-transform") -myenv=myenv.Clone(CPPPATH=Split(cpppath)) pgm=myenv.Program(pgm, files, LIBPATH=LIBPATH, LIBS=LIBS) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm) Default(install) diff --git a/builtin_xforms/add_lib/al.cpp b/builtin_xforms/add_lib/al.cpp index 32dda4d6bf60b00b110310bf4a401774dba634ce..0e7ad7220a75710c131b249265b922eeda42e694 100644 --- a/builtin_xforms/add_lib/al.cpp +++ b/builtin_xforms/add_lib/al.cpp @@ -12,7 +12,6 @@ AddLib_t::AddLib_t(FileIR_t* firp, const StringSet_t &p_prepended, const StringS { } - int AddLib_t::execute() { diff --git a/builtin_xforms/move_globals/SConscript b/builtin_xforms/move_globals/SConscript index 98e2b932f1721b823e677ad337b365be8f463248..bde873bfb36cc9e376e34fd2336ec662326b4be6 100644 --- a/builtin_xforms/move_globals/SConscript +++ b/builtin_xforms/move_globals/SConscript @@ -2,25 +2,27 @@ import os -Import('irdb_env') +Import('env') # import and create a copy of the environment so we don't screw up anyone elses env. -myenv=irdb_env.Clone() -myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) -myenv.Replace(ZIPR_HOME=os.environ['ZIPR_HOME']) -myenv.Replace(ZIPR_SDK=os.environ['ZIPR_SDK']) -myenv.Replace(ZIPR_INSTALL=os.environ['ZIPR_INSTALL']) -myenv.Append(CXXFLAGS = " -std=c++11 -Wall ") +myenv=env.Clone() + +cpppath=''' + $SECURITY_TRANSFORMS_HOME/third_party/elfio-code + $PEASOUP_HOME/irdb-libs/libStructDiv/include + $PEASOUP_HOME/irdb-libs/libEXEIO/include + $IRDB_SDK/include + ''' + -cpppath=myenv['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/third_party/elfio-code " files=Glob( Dir('.').srcnode().abspath+"/*.cpp") pgm="move_globals.so" LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" -LIBS=Split("stars "+ myenv.subst('$BASE_IRDB_LIBS')+ " irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ") -myenv=myenv.Clone(CPPPATH=Split(cpppath)) +LIBS=Split("irdb-core irdb-cfg irdb-util irdb-transform irdb-deep StructDiv EXEIO ") +myenv.Append(CPPPATH=Split(cpppath)) pgm=myenv.SharedLibrary(pgm, files, LIBPATH=LIBPATH, LIBS=LIBS) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm) Default(install) diff --git a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp index 098c78260e41f16b03f30808b34f796bfa6fa407..d45f07e3486d853cdb97576f6305d11f351e8872 100644 --- a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp +++ b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.cpp @@ -26,12 +26,13 @@ using namespace std; using namespace IRDB_SDK; -using namespace MEDS_Annotation; //using namespace MEDS_Annotation; vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *func) { + assert(0); +#if 0 vector<Range> ranges; // std::multimap<VirtualOffset, MEDS_AnnotationBase> @@ -95,4 +96,5 @@ vector<Range> AnnotationBoundaryGenerator::GetBoundaries(IRDB_SDK::Function_t *f } return ranges; +#endif } diff --git a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp index 9f7e8e4063e34b4395f1671db85dc701125843f1..b426b5a37e8c408eb25a944d7a2dd3b2393b8107 100644 --- a/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp +++ b/builtin_xforms/p1transform/AnnotationBoundaryGenerator.hpp @@ -21,19 +21,19 @@ #ifndef __ANNOTBOUNDGEN #define __ANNOTBOUNDGEN #include "PrecedenceBoundaryGenerator.hpp" -#include "MEDS_AnnotationParser.hpp" -#include "MEDS_AnnotationBase.hpp" -#include "MEDS_InstructionCheckAnnotation.hpp" -#include "VirtualOffset.hpp" +//#include "MEDS_AnnotationParser.hpp" +//#include "MEDS_AnnotationBase.hpp" +//#include "MEDS_InstructionCheckAnnotation.hpp" +// #include "VirtualOffset.hpp" #include <fstream> class AnnotationBoundaryGenerator : public PrecedenceBoundaryGenerator { protected: - MEDS_Annotation::MEDS_AnnotationParser *annotParser; +// MEDS_Annotation::MEDS_AnnotationParser *annotParser; public: - AnnotationBoundaryGenerator(MEDS_Annotation::MEDS_AnnotationParser *annotParser) : annotParser(annotParser){} +// AnnotationBoundaryGenerator(MEDS_Annotation::MEDS_AnnotationParser *annotParser) : annotParser(annotParser){} virtual std::vector<Range> GetBoundaries(IRDB_SDK::Function_t *func); }; diff --git a/builtin_xforms/p1transform/PNMain.cpp b/builtin_xforms/p1transform/PNMain.cpp index 1c1603e69785f8d08d90893ec3d821c1c5e5aa48..75c5475050f0c0cb8788a84f4ae1fddc72523ab6 100644 --- a/builtin_xforms/p1transform/PNMain.cpp +++ b/builtin_xforms/p1transform/PNMain.cpp @@ -33,7 +33,7 @@ #include "PrecedenceBoundaryInference.hpp" #include "AnnotationBoundaryGenerator.hpp" -#include "MEDS_AnnotationParser.hpp" +// #include "MEDS_AnnotationParser.hpp" #include <iostream> #include <fstream> @@ -48,7 +48,7 @@ using namespace std; using namespace IRDB_SDK; -using namespace MEDS_Annotation; +// using namespace MEDS_Annotation; #define ALLOF(a) begin(a),end(a) @@ -535,24 +535,24 @@ int executeStep(IRDBObjects_t *const irdb_objects) ifstream annotationFile("a.ncexe.infoannot", ifstream::in); assert(annotationFile.is_open()); - AnnotationBoundaryGenerator *abgen = new AnnotationBoundaryGenerator(new MEDS_AnnotationParser(annotationFile)); +// AnnotationBoundaryGenerator *abgen = new AnnotationBoundaryGenerator(new MEDS_AnnotationParser(annotationFile)); - PrecedenceBoundaryInference *aggressive_memset_inference = new PrecedenceBoundaryInference(offset_inference,abgen); +// PrecedenceBoundaryInference *aggressive_memset_inference = new PrecedenceBoundaryInference(offset_inference,abgen); DirectOffsetInference *direct_offset_inference = new DirectOffsetInference(offset_inference); ScaledOffsetInference *scaled_offset_inference = new ScaledOffsetInference(offset_inference); P1Inference *p1 = new P1Inference(offset_inference); - PrecedenceBoundaryInference *conservative_memset_inference = new PrecedenceBoundaryInference(p1, abgen); + // PrecedenceBoundaryInference *conservative_memset_inference = new PrecedenceBoundaryInference(p1, abgen); //Add new boundary inferences here //TODO: in addition to a hierarchy there should be equivalence classes, a failure in one member, is a failure for all. - transform_driver.AddInference(aggressive_memset_inference); +// transform_driver.AddInference(aggressive_memset_inference); transform_driver.AddInference(offset_inference,1); transform_driver.AddInference(direct_offset_inference,1); transform_driver.AddInference(scaled_offset_inference,1); - transform_driver.AddInference(conservative_memset_inference,1); +// transform_driver.AddInference(conservative_memset_inference,1); transform_driver.AddInference(p1,2); transform_driver.AddBlacklist(blackListOfFunctions); diff --git a/builtin_xforms/p1transform/SConscript b/builtin_xforms/p1transform/SConscript index bee94540c3a6f5fc29ce188f8a31cf1fb8d4e70c..85bebeb8c180dfd4ba77ad773133fb2455b230e7 100644 --- a/builtin_xforms/p1transform/SConscript +++ b/builtin_xforms/p1transform/SConscript @@ -1,26 +1,26 @@ import os -Import('irdb_env') -myenv=irdb_env.Clone() -myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) +Import('env') +myenv=env.Clone() -cpppath=irdb_env['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/libMEDSannotation/include " +LIBS= " irdb-cfg irdb-transform irdb-core " -LIBS= " irdb-cfg MEDSannotation irdb-transform EXEIO " + irdb_env.subst('$BASE_IRDB_LIBS') -LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" +cpppath=''' + $IRDB_SDK/include + $PEASOUP_HOME/irdb-libs/libEXEIO/include + ''' -#integer_files="transformutils.cpp integertransformdriver.cpp" +libpath="$SECURITY_TRANSFORMS_HOME/lib" +myenv.Append(LIBPATH=Split(libpath)) +myenv.Append(CPPPATH=Split(cpppath)) -# doesn't work on solaris. -myenv.Append(CXXFLAGS = " -std=c++11 ") -all_files="P1_utility.cpp PNTransformDriver.cpp PNStackLayout.cpp PNRange.cpp Range.cpp OffsetInference.cpp DirectOffsetInference.cpp ScaledOffsetInference.cpp P1Inference.cpp PNRegularExpressions.cpp PNMain.cpp StackLayout.cpp General_Utility.cpp AnnotationBoundaryGenerator.cpp PrecedenceBoundaryInference.cpp PNIrdbManager.cpp EhUpdater.cpp" -myenv=myenv.Clone(CPPPATH=Split(cpppath)) +all_files="P1_utility.cpp PNTransformDriver.cpp PNStackLayout.cpp PNRange.cpp Range.cpp OffsetInference.cpp DirectOffsetInference.cpp ScaledOffsetInference.cpp P1Inference.cpp PNRegularExpressions.cpp PNMain.cpp StackLayout.cpp General_Utility.cpp AnnotationBoundaryGenerator.cpp PrecedenceBoundaryInference.cpp PNIrdbManager.cpp EhUpdater.cpp" -p1=myenv.SharedLibrary("p1transform.so", Split(all_files), LIBS=Split(LIBS), LIBPATH=Split(LIBPATH)) +p1=myenv.SharedLibrary("p1transform.so", Split(all_files), LIBS=Split(LIBS)) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", p1) Default(install) diff --git a/builtin_xforms/resolve_callbacks/SConscript b/builtin_xforms/resolve_callbacks/SConscript index ff326a6cc7ae47553585f6ab15c74410ae4535fa..7da12b8d3268ab770fa67d3254385ad7e6f634cb 100644 --- a/builtin_xforms/resolve_callbacks/SConscript +++ b/builtin_xforms/resolve_callbacks/SConscript @@ -1,23 +1,17 @@ -import os +Import('env') +myenv=env.Clone() -Import('irdb_env') -myenv=irdb_env.Clone() -myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) -cpppath=irdb_env['IRDB_INC'] + " $SECURITY_TRANSFORMS_HOME/third_party/elfio-code/ " -LIBPATH="$SECURITY_TRANSFORMS_HOME/lib" -LIBS=Split( myenv.subst('$BASE_IRDB_LIBS') + " irdb-core irdb-cfg irdb-util irdb-transform MEDSannotation") +cpppath=" $IRDB_SDK/include $SECURITY_TRANSFORMS_HOME/third_party/elfio-code/ " +libpath="$SECURITY_TRANSFORMS_HOME/lib" +LIBS=Split( " irdb-core irdb-cfg irdb-util irdb-transform ") -if 'debug' in myenv and int(myenv['debug']) == 1: - print "Setting debug mode in resolve_callbacks" - myenv.Append(CFLAGS=" -g -O0") - myenv.Append(CXXFLAGS=" -g -O0") - myenv.Append(LINKFLAGS=" -g -O0") -myenv=myenv.Clone(CPPPATH=Split(cpppath)) +myenv.Append(LIBPATH=Split(libpath)) +myenv.Append(CPPPATH=Split(cpppath)) -pgm=myenv.Program(target="resolve_callbacks.exe", source=Split("callbacks.cpp callbacks_driver.cpp"), LIBPATH=LIBPATH, LIBS=LIBS) +pgm=myenv.Program(target="resolve_callbacks.exe", source=Split("callbacks.cpp callbacks_driver.cpp"), LIBS=LIBS) install=myenv.Install("$SECURITY_TRANSFORMS_HOME/plugins_install/", pgm) Default(install) Return('install')