From fb9a3fe66f3414272c9450085d1018bfbadb8226 Mon Sep 17 00:00:00 2001 From: Jason Hiser <jdhiser@gmail.com> Date: Fri, 1 Feb 2019 12:46:04 -0500 Subject: [PATCH] unified library building mechanisms Former-commit-id: 32c3f99b0280e1ec376052b40591afcb5fb9bbba --- SConscript | 20 +- .../include}/BasicBlock.hpp | 0 .../cfg => libIRDB-cfg/include}/CFG.hpp | 0 .../cfg => libIRDB-cfg/include}/callgraph.hpp | 0 .../include}/criticaledge.hpp | 0 .../cfg => libIRDB-cfg/include}/domgraph.hpp | 0 .../include/libIRDB-cfg.hpp | 10 +- .../cfg => libIRDB-cfg/src}/BasicBlock.cpp | 0 {libIRDB/src/cfg => libIRDB-cfg/src}/CFG.cpp | 0 {libIRDB/src/cfg => libIRDB-cfg/src}/Makefile | 0 .../src/cfg => libIRDB-cfg/src}/SConscript | 3 +- .../src/cfg => libIRDB-cfg/src}/SConstruct | 0 .../src/cfg => libIRDB-cfg/src}/callgraph.cpp | 0 .../cfg => libIRDB-cfg/src}/criticaledge.cpp | 0 .../src/cfg => libIRDB-cfg/src}/domgraph.cpp | 0 .../include}/IRDB_Objects.hpp | 0 .../core => libIRDB-core/include}/address.hpp | 0 .../include}/archdesc.hpp | 0 .../core => libIRDB-core/include}/baseobj.hpp | 0 .../include}/basetypes.hpp | 0 .../include}/dbinterface.hpp | 0 .../core => libIRDB-core/include}/decode.hpp | 0 .../include}/decode_base.hpp | 0 .../include}/decode_csarm.hpp | 0 .../include}/decode_csx86.hpp | 0 .../include}/decode_dispatch.hpp | 0 .../core => libIRDB-core/include}/doip.hpp | 0 .../core => libIRDB-core/include}/eh.hpp | 0 .../core => libIRDB-core/include}/file.hpp | 0 .../core => libIRDB-core/include}/fileir.hpp | 0 .../include}/function.hpp | 0 .../core => libIRDB-core/include}/icfs.hpp | 0 .../include}/instruction.hpp | 0 .../include/libIRDB-core.hpp | 40 +- .../include}/operand_base.hpp | 0 .../include}/operand_csarm.hpp | 0 .../include}/operand_csx86.hpp | 0 .../include}/operand_dispatch.hpp | 0 .../core => libIRDB-core/include}/pqxxdb.hpp | 0 .../core => libIRDB-core/include}/reloc.hpp | 0 .../core => libIRDB-core/include}/scoop.hpp | 0 .../include}/transform_step.h | 0 .../core => libIRDB-core/include}/type.hpp | 0 .../include}/variantid.hpp | 0 .../src}/IRDB_Objects.cpp | 0 .../src/core => libIRDB-core/src}/SConscript | 2 +- .../src/core => libIRDB-core/src}/SConstruct | 0 .../src/core => libIRDB-core/src}/address.cpp | 0 .../src/core => libIRDB-core/src}/all.hpp | 0 .../src/core => libIRDB-core/src}/baseobj.cpp | 0 .../core => libIRDB-core/src}/dbinterface.cpp | 0 .../core => libIRDB-core/src}/decode_base.cpp | 12 +- .../src}/decode_csarm.cpp | 8 +- .../src}/decode_csx86.cpp | 8 +- .../src}/decode_dispatch.cpp | 16 +- {libIRDB/src/core => libIRDB-core/src}/eh.cpp | 0 .../src/core => libIRDB-core/src}/file.cpp | 0 .../src/core => libIRDB-core/src}/fileir.cpp | 0 .../core => libIRDB-core/src}/function.cpp | 0 .../src}/generate_spri.cpp | 0 .../src/core => libIRDB-core/src}/icfs.cpp | 0 .../core => libIRDB-core/src}/instruction.cpp | 0 .../src}/operand_csarm.cpp | 8 +- .../src}/operand_csx86.cpp | 8 +- .../src}/operand_dispatch.cpp | 8 +- .../src/core => libIRDB-core/src}/pqxxdb.cpp | 0 .../src/core => libIRDB-core/src}/reloc.cpp | 0 .../src/core => libIRDB-core/src}/scoop.cpp | 0 .../src/core => libIRDB-core/src}/type.cpp | 0 .../core => libIRDB-core/src}/variantid.cpp | 0 {libElfDep => libIRDB-elfdep}/SConscript | 0 {libElfDep => libIRDB-elfdep}/SConstruct | 0 {libElfDep => libIRDB-elfdep}/src/SConscript | 0 {libElfDep => libIRDB-elfdep}/src/SConstruct | 0 {libElfDep => libIRDB-elfdep}/src/elfdep.cpp | 28 +- .../src/libElfDep.hpp | 0 {libElfDep => libIRDB-elfdep}/test/.gitignore | 0 {libElfDep => libIRDB-elfdep}/test/SConscript | 0 {libElfDep => libIRDB-elfdep}/test/SConstruct | 0 {libElfDep => libIRDB-elfdep}/test/edt.cpp | 0 {libElfDep => libIRDB-elfdep}/test/edt.hpp | 0 .../test/edt_driver.cpp | 0 .../test/elf_dep_test.cpp | 0 .../test/test-elfdep.sh | 0 .../include/libIRDB-syscall.hpp | 2 +- .../include}/syscall.hpp | 0 .../src}/SConscript | 3 +- .../src}/SConstruct | 0 .../src}/syscall.cpp | 0 {libtransform => libIRDB-transform}/Makefile | 0 .../SConscript | 0 .../SConstruct | 0 .../include-unused-delete-later/Makefile.in | 0 .../Rewrite_Utility.hpp | 0 .../integertransform.cpp | 0 .../integertransform.hpp | 0 .../integertransform32.cpp | 0 .../integertransform32.hpp | 0 .../integertransform64.cpp | 0 .../integertransform64.hpp | 0 .../leapattern.cpp | 0 .../leapattern.hpp | 0 .../pointercheck64.cpp | 0 .../pointercheck64.hpp | 0 .../include-unused-delete-later/transform.hpp | 0 .../src/SConscript | 4 +- .../src/SConstruct | 0 .../src/rewrite_util.cpp | 0 .../src/transform.cpp | 0 .../tests/Makefile | 0 .../tests/Makefile.pointers | 0 .../tests/austin/array.c | 0 .../tests/austin/branch.c | 0 .../tests/austin/malloc.c | 0 .../tests/austin/memcpy.c | 0 .../tests/austin/memset.c | 0 .../tests/c++/prog.c | 0 .../tests/clark1.c | 0 .../tests/false_positives/cat.err | 0 .../tests/false_positives/cat.out | 0 .../tests/false_positives/cat.shared.orig | Bin .../false_positives/cat.shared.orig.peasoup | 0 .../tests/false_positives/ls.err | 0 .../tests/false_positives/ls.out | 0 .../tests/false_positives/ls.shared.orig | Bin .../false_positives/ls.shared.orig.peasoup | 0 .../tests/idiom18.c | 0 .../tests/int16overflow.c | 0 .../tests/int32overflow.c | 0 .../tests/integer/addsuboverflow/Makefile | 0 .../addsuboverflow/acrossfunctions/Makefile | 0 .../acrossfunctions/addsub.ctmpl | 0 .../acrossfunctions/addsub.shtmpl | 0 .../acrossfunctions/generate_addsub_tests.sh | 0 .../acrossfunctions/run_tests.sh | 0 .../addsuboverflow/intraframe/Makefile | 0 .../addsuboverflow/intraframe/addsub.ctmpl | 0 .../addsub.int.int.-w.nobenchflag.test.sh | 0 .../intraframe/addsub.int.int.c | 0 ...ub.int.unsigned+int.-w.nobenchflag.test.sh | 0 .../intraframe/addsub.int.unsigned+int.c | 0 .../addsuboverflow/intraframe/addsub.shtmpl | 0 ...ub.unsigned+int.int.-w.nobenchflag.test.sh | 0 .../intraframe/addsub.unsigned+int.int.c | 0 ...ed+int.unsigned+int.-w.nobenchflag.test.sh | 0 .../addsub.unsigned+int.unsigned+int.c | 0 .../intraframe/generate_addsub_tests.sh | 0 .../addsuboverflow/intraframe/run_tests.sh | 0 .../tests/mitre/README | 0 .../tests/mitre/TC_C_191_v304/README | 0 .../mitre/TC_C_191_v304/Release/makefile | 88 +-- .../mitre/TC_C_191_v304/Release/objects.mk | 16 +- .../mitre/TC_C_191_v304}/Release/sources.mk | 30 +- .../mitre/TC_C_191_v304/Release/src/recaman.d | 2 +- .../mitre/TC_C_191_v304/Release/src/subdir.mk | 42 +- .../io-TC_C_191_304_Bad1.xml | 0 .../io-TC_C_191_304_Good1.xml | 0 .../io-TC_C_191_304_Good2.xml | 0 .../io-TC_C_191_304_Good3.xml | 0 .../io-TC_C_191_304_Good4.xml | 0 .../io-TC_C_191_304_Good5.xml | 0 .../io-specifications/io-good.xml | 0 .../io-large input value.xml | 0 .../tests/mitre/TC_C_191_v304/metaData.xml | 0 .../tests/mitre/TC_C_191_v304/src/Makefile | 0 .../tests/mitre/TC_C_191_v304/src/out | 0 .../tests/mitre/TC_C_191_v304/src/recaman.c | 380 +++++------ .../tests/mitre/TC_C_196_v459/README | 0 .../mitre/TC_C_196_v459/Release/makefile | 88 +-- .../mitre/TC_C_196_v459/Release/objects.mk | 16 +- .../mitre/TC_C_196_v459}/Release/sources.mk | 30 +- .../TC_C_196_v459/Release/src/countlines.d | 2 +- .../mitre/TC_C_196_v459/Release/src/subdir.mk | 42 +- .../io-specifications/io-Long File Name.xml | 0 .../io-specifications/io-good.xml | 0 .../tests/mitre/TC_C_196_v459/metaData.xml | 0 .../tests/mitre/TC_C_196_v459/src/Makefile | 0 .../mitre/TC_C_196_v459/src/countlines.c | 610 +++++++++--------- .../tests/mitre/TC_C_196_v459/testData/1.java | 0 .../tests/mitre/TC_C_196_v459/testData/2.java | 0 .../tests/mitre/TC_C_196_v459/testData/3.java | 0 .../tests/mitre/TC_C_196_v459/testData/4.java | 0 .../tests/mitre/TC_C_196_v459/testData/5.java | 20 +- .../tests/mul.c | 0 .../tests/sample_meds_int.annot | 0 .../tests/signed_add.64.c | 0 .../tests/signed_mul.32.c | 0 .../tests/signed_mul.64.c | 0 .../tests/signedness.64.unsigned.c | 0 .../tests/simpletest.c | 0 .../tests/test.signed_add.64.sh | 0 .../tests/test.signed_mul.32.sh | 0 .../tests/test.signed_mul.64.sh | 0 .../tests/test.trunc.32.16.signed.sh | 0 .../tests/test.trunc.32.16.unsigned.sh | 0 .../tests/test.trunc.32.8.signed.sh | 0 .../tests/test.trunc.32.8.unsigned.sh | 0 .../tests/test.trunc.64.16.signed.sh | 0 .../tests/test.trunc.64.16.unknown.sh | 0 .../tests/test.trunc.64.16.unsigned.sh | 0 .../tests/test.trunc.64.32.signed.sh | 0 .../tests/test.trunc.64.32.unsigned.sh | 0 .../tests/test.trunc.64.8.signed.sh | 0 .../tests/test.trunc.64.8.unknown.sh | 0 .../tests/test.trunc.64.8.unsigned.sh | 0 .../tests/test.unsigned_add.64.sh | 0 .../tests/test.unsigned_mul.32.sh | 0 .../tests/test.unsigned_mul.64.sh | 0 .../tests/testall | 0 .../tests/trunc.16.8.c | 0 .../tests/trunc.32.16.signed.c | 0 .../tests/trunc.32.16.unsigned.c | 0 .../tests/trunc.32.8.signed.c | 0 .../tests/trunc.32.8.unsigned.c | 0 .../tests/trunc.64.16.signed.c | 0 .../tests/trunc.64.16.unknown.c | 0 .../tests/trunc.64.16.unsigned.c | 0 .../tests/trunc.64.32.signed.c | 0 .../tests/trunc.64.32.unsigned.c | 0 .../tests/trunc.64.8.signed.c | 0 .../tests/trunc.64.8.unknown.c | 0 .../tests/trunc.64.8.unsigned.c | 0 .../tests/unsigned_add.64.c | 0 .../tests/unsigned_add.c | 0 .../tests/unsigned_mul.32.c | 0 .../tests/unsigned_mul.64.c | 0 .../include}/IBT_Provenance.hpp | 0 .../include}/Provenance.hpp | 0 .../include}/insn_preds.hpp | 0 .../include/libIRDB-util.hpp | 6 +- .../util => libIRDB-util/include}/params.hpp | 0 .../src}/IBT_Provenance.cpp | 0 .../src/util => libIRDB-util/src}/Makefile | 0 .../src/util => libIRDB-util/src}/SConscript | 3 +- .../src/util => libIRDB-util/src}/SConstruct | 0 .../util => libIRDB-util/src}/insn_preds.cpp | 0 .../src/util => libIRDB-util/src}/params.cpp | 0 libIRDB/LICENSE.txt | 14 - libIRDB/Makefile.in | 13 - libIRDB/SConscript | 10 - libIRDB/SConstruct | 8 - libIRDB/install_libs.sh | 11 - libIRDB/src/Makefile.in | 11 - libIRDB/src/SConscript | 17 - libIRDB/src/SConstruct | 8 - libtransform/tests/bin/ls_O3.exe | Bin 352719 -> 0 bytes meds2pdb/SConscript | 3 +- meds2pdb/elfreader.cpp | 2 +- thanos/SConscript | 2 +- 249 files changed, 796 insertions(+), 858 deletions(-) rename {libIRDB/include/cfg => libIRDB-cfg/include}/BasicBlock.hpp (100%) rename {libIRDB/include/cfg => libIRDB-cfg/include}/CFG.hpp (100%) rename {libIRDB/include/cfg => libIRDB-cfg/include}/callgraph.hpp (100%) rename {libIRDB/include/cfg => libIRDB-cfg/include}/criticaledge.hpp (100%) rename {libIRDB/include/cfg => libIRDB-cfg/include}/domgraph.hpp (100%) rename {libIRDB => libIRDB-cfg}/include/libIRDB-cfg.hpp (86%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/BasicBlock.cpp (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/CFG.cpp (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/Makefile (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/SConscript (86%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/SConstruct (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/callgraph.cpp (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/criticaledge.cpp (100%) rename {libIRDB/src/cfg => libIRDB-cfg/src}/domgraph.cpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/IRDB_Objects.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/address.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/archdesc.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/baseobj.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/basetypes.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/dbinterface.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/decode.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/decode_base.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/decode_csarm.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/decode_csx86.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/decode_dispatch.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/doip.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/eh.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/file.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/fileir.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/function.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/icfs.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/instruction.hpp (100%) rename {libIRDB => libIRDB-core}/include/libIRDB-core.hpp (64%) rename {libIRDB/include/core => libIRDB-core/include}/operand_base.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/operand_csarm.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/operand_csx86.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/operand_dispatch.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/pqxxdb.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/reloc.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/scoop.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/transform_step.h (100%) rename {libIRDB/include/core => libIRDB-core/include}/type.hpp (100%) rename {libIRDB/include/core => libIRDB-core/include}/variantid.hpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/IRDB_Objects.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/SConscript (95%) rename {libIRDB/src/core => libIRDB-core/src}/SConstruct (100%) rename {libIRDB/src/core => libIRDB-core/src}/address.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/all.hpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/baseobj.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/dbinterface.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/decode_base.cpp (92%) rename {libIRDB/src/core => libIRDB-core/src}/decode_csarm.cpp (98%) rename {libIRDB/src/core => libIRDB-core/src}/decode_csx86.cpp (99%) rename {libIRDB/src/core => libIRDB-core/src}/decode_dispatch.cpp (91%) rename {libIRDB/src/core => libIRDB-core/src}/eh.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/file.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/fileir.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/function.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/generate_spri.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/icfs.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/instruction.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/operand_csarm.cpp (98%) rename {libIRDB/src/core => libIRDB-core/src}/operand_csx86.cpp (99%) rename {libIRDB/src/core => libIRDB-core/src}/operand_dispatch.cpp (93%) rename {libIRDB/src/core => libIRDB-core/src}/pqxxdb.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/reloc.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/scoop.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/type.cpp (100%) rename {libIRDB/src/core => libIRDB-core/src}/variantid.cpp (100%) rename {libElfDep => libIRDB-elfdep}/SConscript (100%) rename {libElfDep => libIRDB-elfdep}/SConstruct (100%) rename {libElfDep => libIRDB-elfdep}/src/SConscript (100%) rename {libElfDep => libIRDB-elfdep}/src/SConstruct (100%) rename {libElfDep => libIRDB-elfdep}/src/elfdep.cpp (94%) rename {libElfDep => libIRDB-elfdep}/src/libElfDep.hpp (100%) rename {libElfDep => libIRDB-elfdep}/test/.gitignore (100%) rename {libElfDep => libIRDB-elfdep}/test/SConscript (100%) rename {libElfDep => libIRDB-elfdep}/test/SConstruct (100%) rename {libElfDep => libIRDB-elfdep}/test/edt.cpp (100%) rename {libElfDep => libIRDB-elfdep}/test/edt.hpp (100%) rename {libElfDep => libIRDB-elfdep}/test/edt_driver.cpp (100%) rename {libElfDep => libIRDB-elfdep}/test/elf_dep_test.cpp (100%) rename {libElfDep => libIRDB-elfdep}/test/test-elfdep.sh (100%) rename {libIRDB => libIRDB-syscall}/include/libIRDB-syscall.hpp (96%) rename {libIRDB/include/syscall => libIRDB-syscall/include}/syscall.hpp (100%) rename {libIRDB/src/syscall => libIRDB-syscall/src}/SConscript (85%) rename {libIRDB/src/syscall => libIRDB-syscall/src}/SConstruct (100%) rename {libIRDB/src/syscall => libIRDB-syscall/src}/syscall.cpp (100%) rename {libtransform => libIRDB-transform}/Makefile (100%) rename {libtransform => libIRDB-transform}/SConscript (100%) rename {libtransform => libIRDB-transform}/SConstruct (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/Makefile.in (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/Rewrite_Utility.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform.cpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform32.cpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform32.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform64.cpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/integertransform64.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/leapattern.cpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/leapattern.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/pointercheck64.cpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/pointercheck64.hpp (100%) rename {libtransform => libIRDB-transform}/include-unused-delete-later/transform.hpp (100%) rename {libtransform => libIRDB-transform}/src/SConscript (80%) rename {libtransform => libIRDB-transform}/src/SConstruct (100%) rename {libtransform => libIRDB-transform}/src/rewrite_util.cpp (100%) rename {libtransform => libIRDB-transform}/src/transform.cpp (100%) rename {libtransform => libIRDB-transform}/tests/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/Makefile.pointers (100%) rename {libtransform => libIRDB-transform}/tests/austin/array.c (100%) rename {libtransform => libIRDB-transform}/tests/austin/branch.c (100%) rename {libtransform => libIRDB-transform}/tests/austin/malloc.c (100%) rename {libtransform => libIRDB-transform}/tests/austin/memcpy.c (100%) rename {libtransform => libIRDB-transform}/tests/austin/memset.c (100%) rename {libtransform => libIRDB-transform}/tests/c++/prog.c (100%) rename {libtransform => libIRDB-transform}/tests/clark1.c (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/cat.err (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/cat.out (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/cat.shared.orig (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/cat.shared.orig.peasoup (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/ls.err (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/ls.out (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/ls.shared.orig (100%) rename {libtransform => libIRDB-transform}/tests/false_positives/ls.shared.orig.peasoup (100%) rename {libtransform => libIRDB-transform}/tests/idiom18.c (100%) rename {libtransform => libIRDB-transform}/tests/int16overflow.c (100%) rename {libtransform => libIRDB-transform}/tests/int32overflow.c (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/acrossfunctions/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/acrossfunctions/addsub.ctmpl (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/acrossfunctions/addsub.shtmpl (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/acrossfunctions/generate_addsub_tests.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/acrossfunctions/run_tests.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.ctmpl (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.int.int.-w.nobenchflag.test.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.int.int.c (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.-w.nobenchflag.test.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.c (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.shtmpl (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.-w.nobenchflag.test.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.c (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.-w.nobenchflag.test.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.c (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/generate_addsub_tests.sh (100%) rename {libtransform => libIRDB-transform}/tests/integer/addsuboverflow/intraframe/run_tests.sh (100%) rename {libtransform => libIRDB-transform}/tests/mitre/README (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/README (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/Release/makefile (95%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/Release/objects.mk (96%) rename {libtransform/tests/mitre/TC_C_196_v459 => libIRDB-transform/tests/mitre/TC_C_191_v304}/Release/sources.mk (96%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/Release/src/recaman.d (97%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/Release/src/subdir.mk (97%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Bad1.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good1.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good2.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good3.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good4.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good5.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-good.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/io-specifications/io-large input value.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/metaData.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/src/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/src/out (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_191_v304/src/recaman.c (96%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/README (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/Release/makefile (95%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/Release/objects.mk (96%) rename {libtransform/tests/mitre/TC_C_191_v304 => libIRDB-transform/tests/mitre/TC_C_196_v459}/Release/sources.mk (96%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/Release/src/countlines.d (98%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/Release/src/subdir.mk (97%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/io-specifications/io-Long File Name.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/io-specifications/io-good.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/metaData.xml (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/src/Makefile (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/src/countlines.c (97%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/testData/1.java (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/testData/2.java (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/testData/3.java (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/testData/4.java (100%) rename {libtransform => libIRDB-transform}/tests/mitre/TC_C_196_v459/testData/5.java (84%) rename {libtransform => libIRDB-transform}/tests/mul.c (100%) rename {libtransform => libIRDB-transform}/tests/sample_meds_int.annot (100%) rename {libtransform => libIRDB-transform}/tests/signed_add.64.c (100%) rename {libtransform => libIRDB-transform}/tests/signed_mul.32.c (100%) rename {libtransform => libIRDB-transform}/tests/signed_mul.64.c (100%) rename {libtransform => libIRDB-transform}/tests/signedness.64.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/simpletest.c (100%) rename {libtransform => libIRDB-transform}/tests/test.signed_add.64.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.signed_mul.32.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.signed_mul.64.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.32.16.signed.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.32.16.unsigned.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.32.8.signed.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.32.8.unsigned.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.16.signed.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.16.unknown.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.16.unsigned.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.32.signed.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.32.unsigned.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.8.signed.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.8.unknown.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.trunc.64.8.unsigned.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.unsigned_add.64.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.unsigned_mul.32.sh (100%) rename {libtransform => libIRDB-transform}/tests/test.unsigned_mul.64.sh (100%) rename {libtransform => libIRDB-transform}/tests/testall (100%) rename {libtransform => libIRDB-transform}/tests/trunc.16.8.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.32.16.signed.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.32.16.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.32.8.signed.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.32.8.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.16.signed.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.16.unknown.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.16.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.32.signed.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.32.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.8.signed.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.8.unknown.c (100%) rename {libtransform => libIRDB-transform}/tests/trunc.64.8.unsigned.c (100%) rename {libtransform => libIRDB-transform}/tests/unsigned_add.64.c (100%) rename {libtransform => libIRDB-transform}/tests/unsigned_add.c (100%) rename {libtransform => libIRDB-transform}/tests/unsigned_mul.32.c (100%) rename {libtransform => libIRDB-transform}/tests/unsigned_mul.64.c (100%) rename {libIRDB/include/util => libIRDB-util/include}/IBT_Provenance.hpp (100%) rename {libIRDB/include/util => libIRDB-util/include}/Provenance.hpp (100%) rename {libIRDB/include/util => libIRDB-util/include}/insn_preds.hpp (100%) rename {libIRDB => libIRDB-util}/include/libIRDB-util.hpp (91%) rename {libIRDB/include/util => libIRDB-util/include}/params.hpp (100%) rename {libIRDB/src/util => libIRDB-util/src}/IBT_Provenance.cpp (100%) rename {libIRDB/src/util => libIRDB-util/src}/Makefile (100%) rename {libIRDB/src/util => libIRDB-util/src}/SConscript (86%) rename {libIRDB/src/util => libIRDB-util/src}/SConstruct (100%) rename {libIRDB/src/util => libIRDB-util/src}/insn_preds.cpp (100%) rename {libIRDB/src/util => libIRDB-util/src}/params.cpp (100%) delete mode 100644 libIRDB/LICENSE.txt delete mode 100644 libIRDB/Makefile.in delete mode 100644 libIRDB/SConscript delete mode 100644 libIRDB/SConstruct delete mode 100755 libIRDB/install_libs.sh delete mode 100644 libIRDB/src/Makefile.in delete mode 100644 libIRDB/src/SConscript delete mode 100644 libIRDB/src/SConstruct delete mode 100755 libtransform/tests/bin/ls_O3.exe diff --git a/SConscript b/SConscript index 4b3050630..d1e4df9eb 100644 --- a/SConscript +++ b/SConscript @@ -67,15 +67,23 @@ libcapstone=os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libcapstone.so" libehp=env.SConscript("libehp/SConscript", variant_dir='scons_build/libehp') libehp=env.Install("$SECURITY_TRANSFORMS_HOME/lib", libehp); -libtransform=SConscript("libtransform/SConscript", variant_dir='scons_build/libtransform') + +libIRDBcore=env.SConscript("libIRDB-core/src/SConscript", variant_dir='scons_build/libIRDB-core') +Depends(libIRDBcore,libcapstone) + +libIRDBcfg=env.SConscript("libIRDB-cfg/src/SConscript", variant_dir='scons_build/libIRDB-cfg') +libIRDButil=env.SConscript("libIRDB-util/src/SConscript", variant_dir='scons_build/libIRDB-util') +libIRDBsyscall=env.SConscript("libIRDB-syscall/src/SConscript", variant_dir='scons_build/libIRDB-syscall') +libElfDep=SConscript("libIRDB-elfdep/src/SConscript", variant_dir='scons_build/libIRDB-elfdep') +libtransform=SConscript("libIRDB-transform/src/SConscript", variant_dir='scons_build/libIRDB-transform') libEXEIO=SConscript("libEXEIO/SConscript", variant_dir='scons_build/libEXEIO') #libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine') + libMEDSannotation=SConscript("libMEDSannotation/SConscript", variant_dir='scons_build/libMEDSannotation') # libxform=SConscript("xform/SConscript", variant_dir='scons_build/libxform') -libIRDB=SConscript("libIRDB/SConscript", variant_dir='scons_build/libIRDB') -Depends(libIRDB,libcapstone) +# libIRDB=SConscript("libIRDB/SConscript", variant_dir='scons_build/libIRDB') +# Depends(libIRDB,libcapstone) libStructDiv=SConscript("libStructDiv/SConscript", variant_dir='scons_build/libStructDiv') -libElfDep=SConscript("libElfDep/SConscript", variant_dir='scons_build/libElfDep') thanos=SConscript("thanos/SConscript", variant_dir='scons_build/thanos') rida=SConscript("rida/SConscript", variant_dir='scons_build/rida') meds2pdb=SConscript("meds2pdb/SConscript", variant_dir='scons_build/meds2pdb') @@ -91,10 +99,10 @@ if 'build_tools' not in env or env['build_tools'] is None or int(env['build_tool Depends(pedi,tools) if "PEDI_HOME" in os.environ: - Depends(pedi, (libehp,libtransform,libEXEIO,libMEDSannotation,libIRDB,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders)) + Depends(pedi, (libIRDBcore, libIRDBcfg, libIRDButil, libIRDBcore, libehp,libtransform,libEXEIO,libMEDSannotation,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders)) Default( pedi ) else: - Default(libehp,libtransform,libEXEIO,libMEDSannotation,libIRDB,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders) + Default(libIRDBcore, libIRDBcfg, libIRDButil, libIRDBcore, libehp,libtransform,libEXEIO,libMEDSannotation,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders) if 'build_tools' not in env or env['build_tools'] is None or int(env['build_tools']) == 1: Default(tools) diff --git a/libIRDB/include/cfg/BasicBlock.hpp b/libIRDB-cfg/include/BasicBlock.hpp similarity index 100% rename from libIRDB/include/cfg/BasicBlock.hpp rename to libIRDB-cfg/include/BasicBlock.hpp diff --git a/libIRDB/include/cfg/CFG.hpp b/libIRDB-cfg/include/CFG.hpp similarity index 100% rename from libIRDB/include/cfg/CFG.hpp rename to libIRDB-cfg/include/CFG.hpp diff --git a/libIRDB/include/cfg/callgraph.hpp b/libIRDB-cfg/include/callgraph.hpp similarity index 100% rename from libIRDB/include/cfg/callgraph.hpp rename to libIRDB-cfg/include/callgraph.hpp diff --git a/libIRDB/include/cfg/criticaledge.hpp b/libIRDB-cfg/include/criticaledge.hpp similarity index 100% rename from libIRDB/include/cfg/criticaledge.hpp rename to libIRDB-cfg/include/criticaledge.hpp diff --git a/libIRDB/include/cfg/domgraph.hpp b/libIRDB-cfg/include/domgraph.hpp similarity index 100% rename from libIRDB/include/cfg/domgraph.hpp rename to libIRDB-cfg/include/domgraph.hpp diff --git a/libIRDB/include/libIRDB-cfg.hpp b/libIRDB-cfg/include/libIRDB-cfg.hpp similarity index 86% rename from libIRDB/include/libIRDB-cfg.hpp rename to libIRDB-cfg/include/libIRDB-cfg.hpp index 25ed68d1d..003113796 100644 --- a/libIRDB/include/libIRDB-cfg.hpp +++ b/libIRDB-cfg/include/libIRDB-cfg.hpp @@ -31,11 +31,11 @@ #include <map> #include <ostream> -#include <cfg/BasicBlock.hpp> -#include <cfg/CFG.hpp> -#include <cfg/callgraph.hpp> -#include <cfg/domgraph.hpp> -#include <cfg/criticaledge.hpp> +#include <BasicBlock.hpp> +#include <CFG.hpp> +#include <callgraph.hpp> +#include <domgraph.hpp> +#include <criticaledge.hpp> #endif diff --git a/libIRDB/src/cfg/BasicBlock.cpp b/libIRDB-cfg/src/BasicBlock.cpp similarity index 100% rename from libIRDB/src/cfg/BasicBlock.cpp rename to libIRDB-cfg/src/BasicBlock.cpp diff --git a/libIRDB/src/cfg/CFG.cpp b/libIRDB-cfg/src/CFG.cpp similarity index 100% rename from libIRDB/src/cfg/CFG.cpp rename to libIRDB-cfg/src/CFG.cpp diff --git a/libIRDB/src/cfg/Makefile b/libIRDB-cfg/src/Makefile similarity index 100% rename from libIRDB/src/cfg/Makefile rename to libIRDB-cfg/src/Makefile diff --git a/libIRDB/src/cfg/SConscript b/libIRDB-cfg/src/SConscript similarity index 86% rename from libIRDB/src/cfg/SConscript rename to libIRDB-cfg/src/SConscript index b5caf9dea..b09d70d76 100644 --- a/libIRDB/src/cfg/SConscript +++ b/libIRDB-cfg/src/SConscript @@ -13,7 +13,8 @@ files= ''' cpppath=''' $IRDB_SDK/include/ $SECURITY_TRANSFORMS_HOME/include/ - $SECURITY_TRANSFORMS_HOME/libIRDB/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-cfg/include/ ''' libpath=''' $SECURITY_TRANSFORMS_HOME/lib diff --git a/libIRDB/src/cfg/SConstruct b/libIRDB-cfg/src/SConstruct similarity index 100% rename from libIRDB/src/cfg/SConstruct rename to libIRDB-cfg/src/SConstruct diff --git a/libIRDB/src/cfg/callgraph.cpp b/libIRDB-cfg/src/callgraph.cpp similarity index 100% rename from libIRDB/src/cfg/callgraph.cpp rename to libIRDB-cfg/src/callgraph.cpp diff --git a/libIRDB/src/cfg/criticaledge.cpp b/libIRDB-cfg/src/criticaledge.cpp similarity index 100% rename from libIRDB/src/cfg/criticaledge.cpp rename to libIRDB-cfg/src/criticaledge.cpp diff --git a/libIRDB/src/cfg/domgraph.cpp b/libIRDB-cfg/src/domgraph.cpp similarity index 100% rename from libIRDB/src/cfg/domgraph.cpp rename to libIRDB-cfg/src/domgraph.cpp diff --git a/libIRDB/include/core/IRDB_Objects.hpp b/libIRDB-core/include/IRDB_Objects.hpp similarity index 100% rename from libIRDB/include/core/IRDB_Objects.hpp rename to libIRDB-core/include/IRDB_Objects.hpp diff --git a/libIRDB/include/core/address.hpp b/libIRDB-core/include/address.hpp similarity index 100% rename from libIRDB/include/core/address.hpp rename to libIRDB-core/include/address.hpp diff --git a/libIRDB/include/core/archdesc.hpp b/libIRDB-core/include/archdesc.hpp similarity index 100% rename from libIRDB/include/core/archdesc.hpp rename to libIRDB-core/include/archdesc.hpp diff --git a/libIRDB/include/core/baseobj.hpp b/libIRDB-core/include/baseobj.hpp similarity index 100% rename from libIRDB/include/core/baseobj.hpp rename to libIRDB-core/include/baseobj.hpp diff --git a/libIRDB/include/core/basetypes.hpp b/libIRDB-core/include/basetypes.hpp similarity index 100% rename from libIRDB/include/core/basetypes.hpp rename to libIRDB-core/include/basetypes.hpp diff --git a/libIRDB/include/core/dbinterface.hpp b/libIRDB-core/include/dbinterface.hpp similarity index 100% rename from libIRDB/include/core/dbinterface.hpp rename to libIRDB-core/include/dbinterface.hpp diff --git a/libIRDB/include/core/decode.hpp b/libIRDB-core/include/decode.hpp similarity index 100% rename from libIRDB/include/core/decode.hpp rename to libIRDB-core/include/decode.hpp diff --git a/libIRDB/include/core/decode_base.hpp b/libIRDB-core/include/decode_base.hpp similarity index 100% rename from libIRDB/include/core/decode_base.hpp rename to libIRDB-core/include/decode_base.hpp diff --git a/libIRDB/include/core/decode_csarm.hpp b/libIRDB-core/include/decode_csarm.hpp similarity index 100% rename from libIRDB/include/core/decode_csarm.hpp rename to libIRDB-core/include/decode_csarm.hpp diff --git a/libIRDB/include/core/decode_csx86.hpp b/libIRDB-core/include/decode_csx86.hpp similarity index 100% rename from libIRDB/include/core/decode_csx86.hpp rename to libIRDB-core/include/decode_csx86.hpp diff --git a/libIRDB/include/core/decode_dispatch.hpp b/libIRDB-core/include/decode_dispatch.hpp similarity index 100% rename from libIRDB/include/core/decode_dispatch.hpp rename to libIRDB-core/include/decode_dispatch.hpp diff --git a/libIRDB/include/core/doip.hpp b/libIRDB-core/include/doip.hpp similarity index 100% rename from libIRDB/include/core/doip.hpp rename to libIRDB-core/include/doip.hpp diff --git a/libIRDB/include/core/eh.hpp b/libIRDB-core/include/eh.hpp similarity index 100% rename from libIRDB/include/core/eh.hpp rename to libIRDB-core/include/eh.hpp diff --git a/libIRDB/include/core/file.hpp b/libIRDB-core/include/file.hpp similarity index 100% rename from libIRDB/include/core/file.hpp rename to libIRDB-core/include/file.hpp diff --git a/libIRDB/include/core/fileir.hpp b/libIRDB-core/include/fileir.hpp similarity index 100% rename from libIRDB/include/core/fileir.hpp rename to libIRDB-core/include/fileir.hpp diff --git a/libIRDB/include/core/function.hpp b/libIRDB-core/include/function.hpp similarity index 100% rename from libIRDB/include/core/function.hpp rename to libIRDB-core/include/function.hpp diff --git a/libIRDB/include/core/icfs.hpp b/libIRDB-core/include/icfs.hpp similarity index 100% rename from libIRDB/include/core/icfs.hpp rename to libIRDB-core/include/icfs.hpp diff --git a/libIRDB/include/core/instruction.hpp b/libIRDB-core/include/instruction.hpp similarity index 100% rename from libIRDB/include/core/instruction.hpp rename to libIRDB-core/include/instruction.hpp diff --git a/libIRDB/include/libIRDB-core.hpp b/libIRDB-core/include/libIRDB-core.hpp similarity index 64% rename from libIRDB/include/libIRDB-core.hpp rename to libIRDB-core/include/libIRDB-core.hpp index 157bc00bb..681d93a33 100644 --- a/libIRDB/include/libIRDB-core.hpp +++ b/libIRDB-core/include/libIRDB-core.hpp @@ -34,26 +34,26 @@ // include SDK #include <irdb-core> -#include <core/basetypes.hpp> -#include <core/dbinterface.hpp> -#include <core/doip.hpp> -#include <core/baseobj.hpp> -#include <core/reloc.hpp> -#include <core/address.hpp> -#include <core/icfs.hpp> -#include <core/instruction.hpp> -#include <core/file.hpp> -#include <core/function.hpp> -#include <core/variantid.hpp> -#include <core/archdesc.hpp> -#include <core/type.hpp> -#include <core/scoop.hpp> -#include <core/eh.hpp> -#include <core/fileir.hpp> -#include <core/pqxxdb.hpp> -#include <core/IRDB_Objects.hpp> -#include <core/transform_step.h> -#include <core/decode.hpp> +#include <basetypes.hpp> +#include <dbinterface.hpp> +#include <doip.hpp> +#include <baseobj.hpp> +#include <reloc.hpp> +#include <address.hpp> +#include <icfs.hpp> +#include <instruction.hpp> +#include <file.hpp> +#include <function.hpp> +#include <variantid.hpp> +#include <archdesc.hpp> +#include <type.hpp> +#include <scoop.hpp> +#include <eh.hpp> +#include <fileir.hpp> +#include <pqxxdb.hpp> +#include <IRDB_Objects.hpp> +#include <transform_step.h> +#include <decode.hpp> int command_to_stream(const std::string& command, std::ostream& stream); diff --git a/libIRDB/include/core/operand_base.hpp b/libIRDB-core/include/operand_base.hpp similarity index 100% rename from libIRDB/include/core/operand_base.hpp rename to libIRDB-core/include/operand_base.hpp diff --git a/libIRDB/include/core/operand_csarm.hpp b/libIRDB-core/include/operand_csarm.hpp similarity index 100% rename from libIRDB/include/core/operand_csarm.hpp rename to libIRDB-core/include/operand_csarm.hpp diff --git a/libIRDB/include/core/operand_csx86.hpp b/libIRDB-core/include/operand_csx86.hpp similarity index 100% rename from libIRDB/include/core/operand_csx86.hpp rename to libIRDB-core/include/operand_csx86.hpp diff --git a/libIRDB/include/core/operand_dispatch.hpp b/libIRDB-core/include/operand_dispatch.hpp similarity index 100% rename from libIRDB/include/core/operand_dispatch.hpp rename to libIRDB-core/include/operand_dispatch.hpp diff --git a/libIRDB/include/core/pqxxdb.hpp b/libIRDB-core/include/pqxxdb.hpp similarity index 100% rename from libIRDB/include/core/pqxxdb.hpp rename to libIRDB-core/include/pqxxdb.hpp diff --git a/libIRDB/include/core/reloc.hpp b/libIRDB-core/include/reloc.hpp similarity index 100% rename from libIRDB/include/core/reloc.hpp rename to libIRDB-core/include/reloc.hpp diff --git a/libIRDB/include/core/scoop.hpp b/libIRDB-core/include/scoop.hpp similarity index 100% rename from libIRDB/include/core/scoop.hpp rename to libIRDB-core/include/scoop.hpp diff --git a/libIRDB/include/core/transform_step.h b/libIRDB-core/include/transform_step.h similarity index 100% rename from libIRDB/include/core/transform_step.h rename to libIRDB-core/include/transform_step.h diff --git a/libIRDB/include/core/type.hpp b/libIRDB-core/include/type.hpp similarity index 100% rename from libIRDB/include/core/type.hpp rename to libIRDB-core/include/type.hpp diff --git a/libIRDB/include/core/variantid.hpp b/libIRDB-core/include/variantid.hpp similarity index 100% rename from libIRDB/include/core/variantid.hpp rename to libIRDB-core/include/variantid.hpp diff --git a/libIRDB/src/core/IRDB_Objects.cpp b/libIRDB-core/src/IRDB_Objects.cpp similarity index 100% rename from libIRDB/src/core/IRDB_Objects.cpp rename to libIRDB-core/src/IRDB_Objects.cpp diff --git a/libIRDB/src/core/SConscript b/libIRDB-core/src/SConscript similarity index 95% rename from libIRDB/src/core/SConscript rename to libIRDB-core/src/SConscript index 0e17eb064..a98b3d156 100644 --- a/libIRDB/src/core/SConscript +++ b/libIRDB-core/src/SConscript @@ -41,7 +41,7 @@ cpppath=''' . $IRDB_SDK/include/ $SECURITY_TRANSFORMS_HOME/include/ - $SECURITY_TRANSFORMS_HOME/libIRDB/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include/ $SECURITY_TRANSFORMS_HOME/libcapstone/include/capstone/ ''' libpath=''' diff --git a/libIRDB/src/core/SConstruct b/libIRDB-core/src/SConstruct similarity index 100% rename from libIRDB/src/core/SConstruct rename to libIRDB-core/src/SConstruct diff --git a/libIRDB/src/core/address.cpp b/libIRDB-core/src/address.cpp similarity index 100% rename from libIRDB/src/core/address.cpp rename to libIRDB-core/src/address.cpp diff --git a/libIRDB/src/core/all.hpp b/libIRDB-core/src/all.hpp similarity index 100% rename from libIRDB/src/core/all.hpp rename to libIRDB-core/src/all.hpp diff --git a/libIRDB/src/core/baseobj.cpp b/libIRDB-core/src/baseobj.cpp similarity index 100% rename from libIRDB/src/core/baseobj.cpp rename to libIRDB-core/src/baseobj.cpp diff --git a/libIRDB/src/core/dbinterface.cpp b/libIRDB-core/src/dbinterface.cpp similarity index 100% rename from libIRDB/src/core/dbinterface.cpp rename to libIRDB-core/src/dbinterface.cpp diff --git a/libIRDB/src/core/decode_base.cpp b/libIRDB-core/src/decode_base.cpp similarity index 92% rename from libIRDB/src/core/decode_base.cpp rename to libIRDB-core/src/decode_base.cpp index ea40fe099..25e996b55 100644 --- a/libIRDB/src/core/decode_base.cpp +++ b/libIRDB-core/src/decode_base.cpp @@ -1,11 +1,11 @@ #include <libIRDB-core.hpp> -#include <core/decode_base.hpp> -#include <core/operand_base.hpp> -#include <core/decode_csx86.hpp> -#include <core/operand_csx86.hpp> -#include <core/decode_csarm.hpp> -#include <core/operand_csarm.hpp> +#include <decode_base.hpp> +#include <operand_base.hpp> +#include <decode_csx86.hpp> +#include <operand_csx86.hpp> +#include <decode_csarm.hpp> +#include <operand_csarm.hpp> #include <exception> using namespace std; diff --git a/libIRDB/src/core/decode_csarm.cpp b/libIRDB-core/src/decode_csarm.cpp similarity index 98% rename from libIRDB/src/core/decode_csarm.cpp rename to libIRDB-core/src/decode_csarm.cpp index d48057dd3..497d92b2a 100644 --- a/libIRDB/src/core/decode_csarm.cpp +++ b/libIRDB-core/src/decode_csarm.cpp @@ -1,9 +1,9 @@ #include <libIRDB-core.hpp> -#include <core/decode_base.hpp> -#include <core/decode_csarm.hpp> -#include <core/operand_base.hpp> -#include <core/operand_csarm.hpp> +#include <decode_base.hpp> +#include <decode_csarm.hpp> +#include <operand_base.hpp> +#include <operand_csarm.hpp> #include <capstone.h> diff --git a/libIRDB/src/core/decode_csx86.cpp b/libIRDB-core/src/decode_csx86.cpp similarity index 99% rename from libIRDB/src/core/decode_csx86.cpp rename to libIRDB-core/src/decode_csx86.cpp index 9b2e5e20a..c261c069e 100644 --- a/libIRDB/src/core/decode_csx86.cpp +++ b/libIRDB-core/src/decode_csx86.cpp @@ -1,9 +1,9 @@ #include <libIRDB-core.hpp> -#include <core/decode_base.hpp> -#include <core/decode_csx86.hpp> -#include <core/operand_base.hpp> -#include <core/operand_csx86.hpp> +#include <decode_base.hpp> +#include <decode_csx86.hpp> +#include <operand_base.hpp> +#include <operand_csx86.hpp> #include <capstone.h> #include <x86.h> diff --git a/libIRDB/src/core/decode_dispatch.cpp b/libIRDB-core/src/decode_dispatch.cpp similarity index 91% rename from libIRDB/src/core/decode_dispatch.cpp rename to libIRDB-core/src/decode_dispatch.cpp index 2f0c405e2..97631d5cb 100644 --- a/libIRDB/src/core/decode_dispatch.cpp +++ b/libIRDB-core/src/decode_dispatch.cpp @@ -1,15 +1,15 @@ #include <libIRDB-core.hpp> -#include <core/decode_base.hpp> -#include <core/decode_csx86.hpp> -#include <core/decode_csarm.hpp> +#include <decode_base.hpp> +#include <decode_csx86.hpp> +#include <decode_csarm.hpp> -#include <core/operand_base.hpp> -#include <core/operand_csx86.hpp> -#include <core/operand_csarm.hpp> +#include <operand_base.hpp> +#include <operand_csx86.hpp> +#include <operand_csarm.hpp> -#include <core/decode_dispatch.hpp> -#include <core/operand_dispatch.hpp> +#include <decode_dispatch.hpp> +#include <operand_dispatch.hpp> using namespace libIRDB; diff --git a/libIRDB/src/core/eh.cpp b/libIRDB-core/src/eh.cpp similarity index 100% rename from libIRDB/src/core/eh.cpp rename to libIRDB-core/src/eh.cpp diff --git a/libIRDB/src/core/file.cpp b/libIRDB-core/src/file.cpp similarity index 100% rename from libIRDB/src/core/file.cpp rename to libIRDB-core/src/file.cpp diff --git a/libIRDB/src/core/fileir.cpp b/libIRDB-core/src/fileir.cpp similarity index 100% rename from libIRDB/src/core/fileir.cpp rename to libIRDB-core/src/fileir.cpp diff --git a/libIRDB/src/core/function.cpp b/libIRDB-core/src/function.cpp similarity index 100% rename from libIRDB/src/core/function.cpp rename to libIRDB-core/src/function.cpp diff --git a/libIRDB/src/core/generate_spri.cpp b/libIRDB-core/src/generate_spri.cpp similarity index 100% rename from libIRDB/src/core/generate_spri.cpp rename to libIRDB-core/src/generate_spri.cpp diff --git a/libIRDB/src/core/icfs.cpp b/libIRDB-core/src/icfs.cpp similarity index 100% rename from libIRDB/src/core/icfs.cpp rename to libIRDB-core/src/icfs.cpp diff --git a/libIRDB/src/core/instruction.cpp b/libIRDB-core/src/instruction.cpp similarity index 100% rename from libIRDB/src/core/instruction.cpp rename to libIRDB-core/src/instruction.cpp diff --git a/libIRDB/src/core/operand_csarm.cpp b/libIRDB-core/src/operand_csarm.cpp similarity index 98% rename from libIRDB/src/core/operand_csarm.cpp rename to libIRDB-core/src/operand_csarm.cpp index cd628548e..01a20a17d 100644 --- a/libIRDB/src/core/operand_csarm.cpp +++ b/libIRDB-core/src/operand_csarm.cpp @@ -1,10 +1,10 @@ #include <libIRDB-core.hpp> #include <memory> -#include <core/decode_base.hpp> -#include <core/decode_csarm.hpp> -#include <core/operand_base.hpp> -#include <core/operand_csarm.hpp> +#include <decode_base.hpp> +#include <decode_csarm.hpp> +#include <operand_base.hpp> +#include <operand_csarm.hpp> using namespace std; diff --git a/libIRDB/src/core/operand_csx86.cpp b/libIRDB-core/src/operand_csx86.cpp similarity index 99% rename from libIRDB/src/core/operand_csx86.cpp rename to libIRDB-core/src/operand_csx86.cpp index dec388b07..ce863a9ef 100644 --- a/libIRDB/src/core/operand_csx86.cpp +++ b/libIRDB-core/src/operand_csx86.cpp @@ -1,10 +1,10 @@ #include <libIRDB-core.hpp> #include <memory> -#include <core/decode_base.hpp> -#include <core/decode_csx86.hpp> -#include <core/operand_base.hpp> -#include <core/operand_csx86.hpp> +#include <decode_base.hpp> +#include <decode_csx86.hpp> +#include <operand_base.hpp> +#include <operand_csx86.hpp> diff --git a/libIRDB/src/core/operand_dispatch.cpp b/libIRDB-core/src/operand_dispatch.cpp similarity index 93% rename from libIRDB/src/core/operand_dispatch.cpp rename to libIRDB-core/src/operand_dispatch.cpp index bf6c75146..0790f4677 100644 --- a/libIRDB/src/core/operand_dispatch.cpp +++ b/libIRDB-core/src/operand_dispatch.cpp @@ -1,9 +1,9 @@ #include <libIRDB-core.hpp> -#include <core/operand_csx86.hpp> -#include <core/decode_csx86.hpp> -#include <core/operand_dispatch.hpp> -#include <core/decode_dispatch.hpp> +#include <operand_csx86.hpp> +#include <decode_csx86.hpp> +#include <operand_dispatch.hpp> +#include <decode_dispatch.hpp> using namespace std; using namespace libIRDB; diff --git a/libIRDB/src/core/pqxxdb.cpp b/libIRDB-core/src/pqxxdb.cpp similarity index 100% rename from libIRDB/src/core/pqxxdb.cpp rename to libIRDB-core/src/pqxxdb.cpp diff --git a/libIRDB/src/core/reloc.cpp b/libIRDB-core/src/reloc.cpp similarity index 100% rename from libIRDB/src/core/reloc.cpp rename to libIRDB-core/src/reloc.cpp diff --git a/libIRDB/src/core/scoop.cpp b/libIRDB-core/src/scoop.cpp similarity index 100% rename from libIRDB/src/core/scoop.cpp rename to libIRDB-core/src/scoop.cpp diff --git a/libIRDB/src/core/type.cpp b/libIRDB-core/src/type.cpp similarity index 100% rename from libIRDB/src/core/type.cpp rename to libIRDB-core/src/type.cpp diff --git a/libIRDB/src/core/variantid.cpp b/libIRDB-core/src/variantid.cpp similarity index 100% rename from libIRDB/src/core/variantid.cpp rename to libIRDB-core/src/variantid.cpp diff --git a/libElfDep/SConscript b/libIRDB-elfdep/SConscript similarity index 100% rename from libElfDep/SConscript rename to libIRDB-elfdep/SConscript diff --git a/libElfDep/SConstruct b/libIRDB-elfdep/SConstruct similarity index 100% rename from libElfDep/SConstruct rename to libIRDB-elfdep/SConstruct diff --git a/libElfDep/src/SConscript b/libIRDB-elfdep/src/SConscript similarity index 100% rename from libElfDep/src/SConscript rename to libIRDB-elfdep/src/SConscript diff --git a/libElfDep/src/SConstruct b/libIRDB-elfdep/src/SConstruct similarity index 100% rename from libElfDep/src/SConstruct rename to libIRDB-elfdep/src/SConstruct diff --git a/libElfDep/src/elfdep.cpp b/libIRDB-elfdep/src/elfdep.cpp similarity index 94% rename from libElfDep/src/elfdep.cpp rename to libIRDB-elfdep/src/elfdep.cpp index 64d60dc87..91cd97a15 100644 --- a/libElfDep/src/elfdep.cpp +++ b/libIRDB-elfdep/src/elfdep.cpp @@ -22,7 +22,6 @@ #include <irdb-core> #include <irdb-transform> #include <irdb-elfdep> -#include <libIRDB-core.hpp> #include <stdlib.h> #include <memory> #include <math.h> @@ -33,7 +32,13 @@ using namespace libIRDB; using namespace std; + +// use some of IRDB_SDK, without committing to all of it. +// it's too confusing to use libIRDB namespace as well as the IRDB_SDK namespace; using IRDB_SDK::VirtualOffset_t; +using IRDB_SDK::Relocation_t; +using IRDB_SDK::Instruction_t; +using IRDB_SDK::DataScoop_t; // defines #define REV_ALLOF(a) rbegin(a), rend(a) @@ -98,7 +103,7 @@ static void insert_into_scoop_at(const string &str, IRDB_SDK::DataScoop_t* scoop // so assert if we find something else for_each(firp->getRelocations().begin(), firp->getRelocations().end(), [scoop](IRDB_SDK::Relocation_t* reloc) { - auto wrt=dynamic_cast<libIRDB::DataScoop_t*>(reloc->getWRT()); + auto wrt=dynamic_cast<IRDB_SDK::DataScoop_t*>(reloc->getWRT()); assert(wrt != scoop || reloc->getType()=="dataptr_to_scoop"); }); @@ -109,7 +114,7 @@ static void insert_into_scoop_at(const string &str, IRDB_SDK::DataScoop_t* scoop for_each(scoop_to_update->getRelocations().begin(), scoop_to_update->getRelocations().end(), [&str,scoop,firp,scoop_to_update,at](IRDB_SDK::Relocation_t* reloc) { // if it's a reloc that's wrt scoop - auto wrt=dynamic_cast<libIRDB::DataScoop_t*>(reloc->getWRT()); + auto wrt=dynamic_cast<IRDB_SDK::DataScoop_t*>(reloc->getWRT()); if(wrt==scoop) { // then we need to update the scoop @@ -204,10 +209,14 @@ IRDB_SDK::Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_El auto newinsn=addNewAssembly(labelstream.str()+": jmp [rel "+labelstream.str()+"]"); + /* auto newreloc=new Relocation_t(BaseObj_t::NOT_IN_DATABASE, 0, "pcrel", got_scoop); dynamic_cast<libIRDB::Instruction_t*>(newinsn)->GetRelocations().insert(newreloc); dynamic_cast<libIRDB::FileIR_t*>(getFileIR())->GetRelocations().insert(newreloc); + */ + auto newreloc=getFileIR()->addNewRelocation(newinsn, 0,"pcrel", got_scoop); + (void)newreloc; // just give to IR. newinsn->getAddress()->setFileID(getFileIR()->getFile()->getBaseID()); return newinsn; @@ -242,7 +251,7 @@ IRDB_SDK::Instruction_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_El template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize> IRDB_SDK::DataScoop_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::add_got_entry(const std::string& name) { - const auto firp=dynamic_cast<libIRDB::FileIR_t*>(getFileIR()); + const auto firp=getFileIR(); // dynamic_cast<libIRDB::FileIR_t*>(getFileIR()); // find relevant scoops auto dynamic_scoop=find_scoop(firp,".dynamic"); // auto gotplt_scoop=find_scoop(firp,".got.plt"); @@ -265,6 +274,7 @@ IRDB_SDK::DataScoop_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_ // create a new, unpinned, rw+relro scoop that's an empty pointer. + /* auto start_addr=new AddressID_t(BaseObj_t::NOT_IN_DATABASE, firp->getFile()->getBaseID(), 0); auto end_addr=new AddressID_t(BaseObj_t::NOT_IN_DATABASE, firp->getFile()->getBaseID(), ptrsize-1); auto external_func_addr_scoop=new DataScoop_t(BaseObj_t::NOT_IN_DATABASE, @@ -273,6 +283,10 @@ IRDB_SDK::DataScoop_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_ firp->GetAddresses().insert(start_addr); firp->GetAddresses().insert(end_addr); firp->GetDataScoops().insert(external_func_addr_scoop); + */ + auto start_addr=firp->addNewAddress(firp->getFile()->getBaseID(), 0); + auto end_addr =firp->addNewAddress(firp->getFile()->getBaseID(), ptrsize-1); + auto external_func_addr_scoop=firp->addNewDataScoop(name,start_addr,end_addr,NULL,6,true,new_got_entry_str); // add string to string table auto dl_str_pos=add_to_scoop(name+'\0', dynstr_scoop); @@ -316,9 +330,13 @@ IRDB_SDK::DataScoop_t* ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_ unsigned int at=rela_count*sizeof(T_Elf_Rela); insert_into_scoop_at<ptrsize>(dl_rel_str, relscoop, firp, at); + /* auto dl_reloc=new Relocation_t(BaseObj_t::NOT_IN_DATABASE, at+((uintptr_t)&dl_rel.r_offset -(uintptr_t)&dl_rel), "dataptr_to_scoop", external_func_addr_scoop); dynamic_cast<libIRDB::DataScoop_t*>(relscoop)->GetRelocations().insert(dl_reloc); firp->GetRelocations().insert(dl_reloc); + */ + auto dl_reloc=firp->addNewRelocation(relscoop,at+((uintptr_t)&dl_rel.r_offset -(uintptr_t)&dl_rel), "dataptr_to_scoop", external_func_addr_scoop); + (void)dl_reloc; // just give to IR; for(int i=0;i+sizeof(T_Elf_Dyn)<dynamic_scoop->getSize(); i+=sizeof(T_Elf_Dyn)) { @@ -418,7 +436,7 @@ bool ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,rel template<typename T_Elf_Sym, typename T_Elf_Rela, typename T_Elf_Dyn, int reloc_type, int rela_shift, int ptrsize> void ElfDependencies_t::ElfDependenciesImpl_t<T_Elf_Sym,T_Elf_Rela,T_Elf_Dyn,reloc_type,rela_shift,ptrsize>::appendLibraryDepedencies(const string &libraryName) { - const auto firp=dynamic_cast<FileIR_t*>(getFileIR()); + const auto firp=getFileIR(); // dynamic_cast<FileIR_t*>(getFileIR()); auto dynamic_scoop=find_scoop(firp,".dynamic"); auto dynstr_scoop=find_scoop(firp,".dynstr"); diff --git a/libElfDep/src/libElfDep.hpp b/libIRDB-elfdep/src/libElfDep.hpp similarity index 100% rename from libElfDep/src/libElfDep.hpp rename to libIRDB-elfdep/src/libElfDep.hpp diff --git a/libElfDep/test/.gitignore b/libIRDB-elfdep/test/.gitignore similarity index 100% rename from libElfDep/test/.gitignore rename to libIRDB-elfdep/test/.gitignore diff --git a/libElfDep/test/SConscript b/libIRDB-elfdep/test/SConscript similarity index 100% rename from libElfDep/test/SConscript rename to libIRDB-elfdep/test/SConscript diff --git a/libElfDep/test/SConstruct b/libIRDB-elfdep/test/SConstruct similarity index 100% rename from libElfDep/test/SConstruct rename to libIRDB-elfdep/test/SConstruct diff --git a/libElfDep/test/edt.cpp b/libIRDB-elfdep/test/edt.cpp similarity index 100% rename from libElfDep/test/edt.cpp rename to libIRDB-elfdep/test/edt.cpp diff --git a/libElfDep/test/edt.hpp b/libIRDB-elfdep/test/edt.hpp similarity index 100% rename from libElfDep/test/edt.hpp rename to libIRDB-elfdep/test/edt.hpp diff --git a/libElfDep/test/edt_driver.cpp b/libIRDB-elfdep/test/edt_driver.cpp similarity index 100% rename from libElfDep/test/edt_driver.cpp rename to libIRDB-elfdep/test/edt_driver.cpp diff --git a/libElfDep/test/elf_dep_test.cpp b/libIRDB-elfdep/test/elf_dep_test.cpp similarity index 100% rename from libElfDep/test/elf_dep_test.cpp rename to libIRDB-elfdep/test/elf_dep_test.cpp diff --git a/libElfDep/test/test-elfdep.sh b/libIRDB-elfdep/test/test-elfdep.sh similarity index 100% rename from libElfDep/test/test-elfdep.sh rename to libIRDB-elfdep/test/test-elfdep.sh diff --git a/libIRDB/include/libIRDB-syscall.hpp b/libIRDB-syscall/include/libIRDB-syscall.hpp similarity index 96% rename from libIRDB/include/libIRDB-syscall.hpp rename to libIRDB-syscall/include/libIRDB-syscall.hpp index 4bd14ca59..3ac7c4ccc 100644 --- a/libIRDB/include/libIRDB-syscall.hpp +++ b/libIRDB-syscall/include/libIRDB-syscall.hpp @@ -30,7 +30,7 @@ #include <ostream> -#include <syscall/syscall.hpp> +#include <syscall.hpp> #endif diff --git a/libIRDB/include/syscall/syscall.hpp b/libIRDB-syscall/include/syscall.hpp similarity index 100% rename from libIRDB/include/syscall/syscall.hpp rename to libIRDB-syscall/include/syscall.hpp diff --git a/libIRDB/src/syscall/SConscript b/libIRDB-syscall/src/SConscript similarity index 85% rename from libIRDB/src/syscall/SConscript rename to libIRDB-syscall/src/SConscript index 687cc3632..b1d91ed76 100644 --- a/libIRDB/src/syscall/SConscript +++ b/libIRDB-syscall/src/SConscript @@ -12,7 +12,8 @@ files= ''' cpppath=''' $IRDB_SDK/include/ $SECURITY_TRANSFORMS_HOME/include/ - $SECURITY_TRANSFORMS_HOME/libIRDB/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-syscall/include/ ''' #myenv.Append(CCFLAGS=" -Wall -W -Wextra -Wconversion ") diff --git a/libIRDB/src/syscall/SConstruct b/libIRDB-syscall/src/SConstruct similarity index 100% rename from libIRDB/src/syscall/SConstruct rename to libIRDB-syscall/src/SConstruct diff --git a/libIRDB/src/syscall/syscall.cpp b/libIRDB-syscall/src/syscall.cpp similarity index 100% rename from libIRDB/src/syscall/syscall.cpp rename to libIRDB-syscall/src/syscall.cpp diff --git a/libtransform/Makefile b/libIRDB-transform/Makefile similarity index 100% rename from libtransform/Makefile rename to libIRDB-transform/Makefile diff --git a/libtransform/SConscript b/libIRDB-transform/SConscript similarity index 100% rename from libtransform/SConscript rename to libIRDB-transform/SConscript diff --git a/libtransform/SConstruct b/libIRDB-transform/SConstruct similarity index 100% rename from libtransform/SConstruct rename to libIRDB-transform/SConstruct diff --git a/libtransform/include-unused-delete-later/Makefile.in b/libIRDB-transform/include-unused-delete-later/Makefile.in similarity index 100% rename from libtransform/include-unused-delete-later/Makefile.in rename to libIRDB-transform/include-unused-delete-later/Makefile.in diff --git a/libtransform/include-unused-delete-later/Rewrite_Utility.hpp b/libIRDB-transform/include-unused-delete-later/Rewrite_Utility.hpp similarity index 100% rename from libtransform/include-unused-delete-later/Rewrite_Utility.hpp rename to libIRDB-transform/include-unused-delete-later/Rewrite_Utility.hpp diff --git a/libtransform/include-unused-delete-later/integertransform.cpp b/libIRDB-transform/include-unused-delete-later/integertransform.cpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform.cpp rename to libIRDB-transform/include-unused-delete-later/integertransform.cpp diff --git a/libtransform/include-unused-delete-later/integertransform.hpp b/libIRDB-transform/include-unused-delete-later/integertransform.hpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform.hpp rename to libIRDB-transform/include-unused-delete-later/integertransform.hpp diff --git a/libtransform/include-unused-delete-later/integertransform32.cpp b/libIRDB-transform/include-unused-delete-later/integertransform32.cpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform32.cpp rename to libIRDB-transform/include-unused-delete-later/integertransform32.cpp diff --git a/libtransform/include-unused-delete-later/integertransform32.hpp b/libIRDB-transform/include-unused-delete-later/integertransform32.hpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform32.hpp rename to libIRDB-transform/include-unused-delete-later/integertransform32.hpp diff --git a/libtransform/include-unused-delete-later/integertransform64.cpp b/libIRDB-transform/include-unused-delete-later/integertransform64.cpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform64.cpp rename to libIRDB-transform/include-unused-delete-later/integertransform64.cpp diff --git a/libtransform/include-unused-delete-later/integertransform64.hpp b/libIRDB-transform/include-unused-delete-later/integertransform64.hpp similarity index 100% rename from libtransform/include-unused-delete-later/integertransform64.hpp rename to libIRDB-transform/include-unused-delete-later/integertransform64.hpp diff --git a/libtransform/include-unused-delete-later/leapattern.cpp b/libIRDB-transform/include-unused-delete-later/leapattern.cpp similarity index 100% rename from libtransform/include-unused-delete-later/leapattern.cpp rename to libIRDB-transform/include-unused-delete-later/leapattern.cpp diff --git a/libtransform/include-unused-delete-later/leapattern.hpp b/libIRDB-transform/include-unused-delete-later/leapattern.hpp similarity index 100% rename from libtransform/include-unused-delete-later/leapattern.hpp rename to libIRDB-transform/include-unused-delete-later/leapattern.hpp diff --git a/libtransform/include-unused-delete-later/pointercheck64.cpp b/libIRDB-transform/include-unused-delete-later/pointercheck64.cpp similarity index 100% rename from libtransform/include-unused-delete-later/pointercheck64.cpp rename to libIRDB-transform/include-unused-delete-later/pointercheck64.cpp diff --git a/libtransform/include-unused-delete-later/pointercheck64.hpp b/libIRDB-transform/include-unused-delete-later/pointercheck64.hpp similarity index 100% rename from libtransform/include-unused-delete-later/pointercheck64.hpp rename to libIRDB-transform/include-unused-delete-later/pointercheck64.hpp diff --git a/libtransform/include-unused-delete-later/transform.hpp b/libIRDB-transform/include-unused-delete-later/transform.hpp similarity index 100% rename from libtransform/include-unused-delete-later/transform.hpp rename to libIRDB-transform/include-unused-delete-later/transform.hpp diff --git a/libtransform/src/SConscript b/libIRDB-transform/src/SConscript similarity index 80% rename from libtransform/src/SConscript rename to libIRDB-transform/src/SConscript index 2c81a4a30..0c250bfeb 100644 --- a/libtransform/src/SConscript +++ b/libIRDB-transform/src/SConscript @@ -11,7 +11,9 @@ files="rewrite_util.cpp transform.cpp" cpppath=''' $IRDB_SDK/include $SECURITY_TRANSFORMS_HOME/include - $SECURITY_TRANSFORMS_HOME/libIRDB/include + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include + $SECURITY_TRANSFORMS_HOME/libIRDB-cfg/include + $SECURITY_TRANSFORMS_HOME/libIRDB-util/include $SECURITY_TRANSFORMS_HOME/libMEDSannotation/include/ ''' diff --git a/libtransform/src/SConstruct b/libIRDB-transform/src/SConstruct similarity index 100% rename from libtransform/src/SConstruct rename to libIRDB-transform/src/SConstruct diff --git a/libtransform/src/rewrite_util.cpp b/libIRDB-transform/src/rewrite_util.cpp similarity index 100% rename from libtransform/src/rewrite_util.cpp rename to libIRDB-transform/src/rewrite_util.cpp diff --git a/libtransform/src/transform.cpp b/libIRDB-transform/src/transform.cpp similarity index 100% rename from libtransform/src/transform.cpp rename to libIRDB-transform/src/transform.cpp diff --git a/libtransform/tests/Makefile b/libIRDB-transform/tests/Makefile similarity index 100% rename from libtransform/tests/Makefile rename to libIRDB-transform/tests/Makefile diff --git a/libtransform/tests/Makefile.pointers b/libIRDB-transform/tests/Makefile.pointers similarity index 100% rename from libtransform/tests/Makefile.pointers rename to libIRDB-transform/tests/Makefile.pointers diff --git a/libtransform/tests/austin/array.c b/libIRDB-transform/tests/austin/array.c similarity index 100% rename from libtransform/tests/austin/array.c rename to libIRDB-transform/tests/austin/array.c diff --git a/libtransform/tests/austin/branch.c b/libIRDB-transform/tests/austin/branch.c similarity index 100% rename from libtransform/tests/austin/branch.c rename to libIRDB-transform/tests/austin/branch.c diff --git a/libtransform/tests/austin/malloc.c b/libIRDB-transform/tests/austin/malloc.c similarity index 100% rename from libtransform/tests/austin/malloc.c rename to libIRDB-transform/tests/austin/malloc.c diff --git a/libtransform/tests/austin/memcpy.c b/libIRDB-transform/tests/austin/memcpy.c similarity index 100% rename from libtransform/tests/austin/memcpy.c rename to libIRDB-transform/tests/austin/memcpy.c diff --git a/libtransform/tests/austin/memset.c b/libIRDB-transform/tests/austin/memset.c similarity index 100% rename from libtransform/tests/austin/memset.c rename to libIRDB-transform/tests/austin/memset.c diff --git a/libtransform/tests/c++/prog.c b/libIRDB-transform/tests/c++/prog.c similarity index 100% rename from libtransform/tests/c++/prog.c rename to libIRDB-transform/tests/c++/prog.c diff --git a/libtransform/tests/clark1.c b/libIRDB-transform/tests/clark1.c similarity index 100% rename from libtransform/tests/clark1.c rename to libIRDB-transform/tests/clark1.c diff --git a/libtransform/tests/false_positives/cat.err b/libIRDB-transform/tests/false_positives/cat.err similarity index 100% rename from libtransform/tests/false_positives/cat.err rename to libIRDB-transform/tests/false_positives/cat.err diff --git a/libtransform/tests/false_positives/cat.out b/libIRDB-transform/tests/false_positives/cat.out similarity index 100% rename from libtransform/tests/false_positives/cat.out rename to libIRDB-transform/tests/false_positives/cat.out diff --git a/libtransform/tests/false_positives/cat.shared.orig b/libIRDB-transform/tests/false_positives/cat.shared.orig similarity index 100% rename from libtransform/tests/false_positives/cat.shared.orig rename to libIRDB-transform/tests/false_positives/cat.shared.orig diff --git a/libtransform/tests/false_positives/cat.shared.orig.peasoup b/libIRDB-transform/tests/false_positives/cat.shared.orig.peasoup similarity index 100% rename from libtransform/tests/false_positives/cat.shared.orig.peasoup rename to libIRDB-transform/tests/false_positives/cat.shared.orig.peasoup diff --git a/libtransform/tests/false_positives/ls.err b/libIRDB-transform/tests/false_positives/ls.err similarity index 100% rename from libtransform/tests/false_positives/ls.err rename to libIRDB-transform/tests/false_positives/ls.err diff --git a/libtransform/tests/false_positives/ls.out b/libIRDB-transform/tests/false_positives/ls.out similarity index 100% rename from libtransform/tests/false_positives/ls.out rename to libIRDB-transform/tests/false_positives/ls.out diff --git a/libtransform/tests/false_positives/ls.shared.orig b/libIRDB-transform/tests/false_positives/ls.shared.orig similarity index 100% rename from libtransform/tests/false_positives/ls.shared.orig rename to libIRDB-transform/tests/false_positives/ls.shared.orig diff --git a/libtransform/tests/false_positives/ls.shared.orig.peasoup b/libIRDB-transform/tests/false_positives/ls.shared.orig.peasoup similarity index 100% rename from libtransform/tests/false_positives/ls.shared.orig.peasoup rename to libIRDB-transform/tests/false_positives/ls.shared.orig.peasoup diff --git a/libtransform/tests/idiom18.c b/libIRDB-transform/tests/idiom18.c similarity index 100% rename from libtransform/tests/idiom18.c rename to libIRDB-transform/tests/idiom18.c diff --git a/libtransform/tests/int16overflow.c b/libIRDB-transform/tests/int16overflow.c similarity index 100% rename from libtransform/tests/int16overflow.c rename to libIRDB-transform/tests/int16overflow.c diff --git a/libtransform/tests/int32overflow.c b/libIRDB-transform/tests/int32overflow.c similarity index 100% rename from libtransform/tests/int32overflow.c rename to libIRDB-transform/tests/int32overflow.c diff --git a/libtransform/tests/integer/addsuboverflow/Makefile b/libIRDB-transform/tests/integer/addsuboverflow/Makefile similarity index 100% rename from libtransform/tests/integer/addsuboverflow/Makefile rename to libIRDB-transform/tests/integer/addsuboverflow/Makefile diff --git a/libtransform/tests/integer/addsuboverflow/acrossfunctions/Makefile b/libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/Makefile similarity index 100% rename from libtransform/tests/integer/addsuboverflow/acrossfunctions/Makefile rename to libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/Makefile diff --git a/libtransform/tests/integer/addsuboverflow/acrossfunctions/addsub.ctmpl b/libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/addsub.ctmpl similarity index 100% rename from libtransform/tests/integer/addsuboverflow/acrossfunctions/addsub.ctmpl rename to libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/addsub.ctmpl diff --git a/libtransform/tests/integer/addsuboverflow/acrossfunctions/addsub.shtmpl b/libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/addsub.shtmpl similarity index 100% rename from libtransform/tests/integer/addsuboverflow/acrossfunctions/addsub.shtmpl rename to libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/addsub.shtmpl diff --git a/libtransform/tests/integer/addsuboverflow/acrossfunctions/generate_addsub_tests.sh b/libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/generate_addsub_tests.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/acrossfunctions/generate_addsub_tests.sh rename to libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/generate_addsub_tests.sh diff --git a/libtransform/tests/integer/addsuboverflow/acrossfunctions/run_tests.sh b/libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/run_tests.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/acrossfunctions/run_tests.sh rename to libIRDB-transform/tests/integer/addsuboverflow/acrossfunctions/run_tests.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/Makefile b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/Makefile similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/Makefile rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/Makefile diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.ctmpl b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.ctmpl similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.ctmpl rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.ctmpl diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.int.-w.nobenchflag.test.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.int.-w.nobenchflag.test.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.int.-w.nobenchflag.test.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.int.-w.nobenchflag.test.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.int.c b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.int.c similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.int.c rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.int.c diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.-w.nobenchflag.test.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.-w.nobenchflag.test.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.-w.nobenchflag.test.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.-w.nobenchflag.test.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.c b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.c similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.c rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.int.unsigned+int.c diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.shtmpl b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.shtmpl similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.shtmpl rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.shtmpl diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.-w.nobenchflag.test.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.-w.nobenchflag.test.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.-w.nobenchflag.test.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.-w.nobenchflag.test.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.c b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.c similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.c rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.int.c diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.-w.nobenchflag.test.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.-w.nobenchflag.test.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.-w.nobenchflag.test.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.-w.nobenchflag.test.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.c b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.c similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.c rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/addsub.unsigned+int.unsigned+int.c diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/generate_addsub_tests.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/generate_addsub_tests.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/generate_addsub_tests.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/generate_addsub_tests.sh diff --git a/libtransform/tests/integer/addsuboverflow/intraframe/run_tests.sh b/libIRDB-transform/tests/integer/addsuboverflow/intraframe/run_tests.sh similarity index 100% rename from libtransform/tests/integer/addsuboverflow/intraframe/run_tests.sh rename to libIRDB-transform/tests/integer/addsuboverflow/intraframe/run_tests.sh diff --git a/libtransform/tests/mitre/README b/libIRDB-transform/tests/mitre/README similarity index 100% rename from libtransform/tests/mitre/README rename to libIRDB-transform/tests/mitre/README diff --git a/libtransform/tests/mitre/TC_C_191_v304/README b/libIRDB-transform/tests/mitre/TC_C_191_v304/README similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/README rename to libIRDB-transform/tests/mitre/TC_C_191_v304/README diff --git a/libtransform/tests/mitre/TC_C_191_v304/Release/makefile b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/makefile similarity index 95% rename from libtransform/tests/mitre/TC_C_191_v304/Release/makefile rename to libIRDB-transform/tests/mitre/TC_C_191_v304/Release/makefile index c4301e005..c823419d8 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/Release/makefile +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/makefile @@ -1,44 +1,44 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - --include ../makefile.init - -RM := rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include subdir.mk --include src/subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: TC_C_191_v304 - -# Tool invocations -TC_C_191_v304: $(OBJS) $(USER_OBJS) - @echo 'Building target: $@' - @echo 'Invoking: MinGW C Linker' - $(SS_LNK) -o"TC_C_191_v304" $(OBJS) $(USER_OBJS) $(LIBS)$ $(SS_LDFLAGS) - @echo 'Finished building target: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) TC_C_191_v304 - -@echo ' ' - -.PHONY: all clean dependents -.SECONDARY: - --include ../makefile.targets +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: TC_C_191_v304 + +# Tool invocations +TC_C_191_v304: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: MinGW C Linker' + $(SS_LNK) -o"TC_C_191_v304" $(OBJS) $(USER_OBJS) $(LIBS)$ $(SS_LDFLAGS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) TC_C_191_v304 + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/libtransform/tests/mitre/TC_C_191_v304/Release/objects.mk b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/objects.mk similarity index 96% rename from libtransform/tests/mitre/TC_C_191_v304/Release/objects.mk rename to libIRDB-transform/tests/mitre/TC_C_191_v304/Release/objects.mk index dc31e16c6..742c2da04 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/Release/objects.mk +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/objects.mk @@ -1,8 +1,8 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -USER_OBJS := - -LIBS := - +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/libtransform/tests/mitre/TC_C_196_v459/Release/sources.mk b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/sources.mk similarity index 96% rename from libtransform/tests/mitre/TC_C_196_v459/Release/sources.mk rename to libIRDB-transform/tests/mitre/TC_C_191_v304/Release/sources.mk index 6975694ac..57cf3c3f1 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/Release/sources.mk +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/sources.mk @@ -1,17 +1,17 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -O_SRCS := -C_SRCS := -S_UPPER_SRCS := -OBJ_SRCS := -ASM_SRCS := -OBJS := -C_DEPS := -EXECUTABLES := - -# Every subdirectory with source files must be described here +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here SUBDIRS := \ src \ - + diff --git a/libtransform/tests/mitre/TC_C_191_v304/Release/src/recaman.d b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/recaman.d similarity index 97% rename from libtransform/tests/mitre/TC_C_191_v304/Release/src/recaman.d rename to libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/recaman.d index 687de8509..d22d96f1b 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/Release/src/recaman.d +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/recaman.d @@ -1 +1 @@ -src/recaman.d src/recaman.o: ../src/recaman.c +src/recaman.d src/recaman.o: ../src/recaman.c diff --git a/libtransform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk similarity index 97% rename from libtransform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk rename to libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk index 56c7f8982..5381eac77 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/Release/src/subdir.mk @@ -1,24 +1,24 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ -../src/recaman.c - +../src/recaman.c + OBJS += \ -./src/recaman.o - +./src/recaman.o + C_DEPS += \ -./src/recaman.d - - -# Each subdirectory must supply rules for building sources it contributes -src/%.o: ../src/%.c - @echo 'Building file: $<' - @echo 'Invoking: GCC C Compiler' - $(SS_CC) -O0 -Wall $(SS_CFLAGS) $(SS_OS_SPECIFIC_CFLAGS) -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - - +./src/recaman.d + + +# Each subdirectory must supply rules for building sources it contributes +src/%.o: ../src/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(SS_CC) -O0 -Wall $(SS_CFLAGS) $(SS_OS_SPECIFIC_CFLAGS) -c -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Bad1.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Bad1.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Bad1.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Bad1.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good1.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good1.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good1.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good1.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good2.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good2.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good2.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good2.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good3.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good3.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good3.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good3.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good4.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good4.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good4.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good4.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good5.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good5.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good5.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-TC_C_191_304_Good5.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-good.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-good.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-good.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-good.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-large input value.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-large input value.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/io-specifications/io-large input value.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/io-specifications/io-large input value.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/metaData.xml b/libIRDB-transform/tests/mitre/TC_C_191_v304/metaData.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/metaData.xml rename to libIRDB-transform/tests/mitre/TC_C_191_v304/metaData.xml diff --git a/libtransform/tests/mitre/TC_C_191_v304/src/Makefile b/libIRDB-transform/tests/mitre/TC_C_191_v304/src/Makefile similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/src/Makefile rename to libIRDB-transform/tests/mitre/TC_C_191_v304/src/Makefile diff --git a/libtransform/tests/mitre/TC_C_191_v304/src/out b/libIRDB-transform/tests/mitre/TC_C_191_v304/src/out similarity index 100% rename from libtransform/tests/mitre/TC_C_191_v304/src/out rename to libIRDB-transform/tests/mitre/TC_C_191_v304/src/out diff --git a/libtransform/tests/mitre/TC_C_191_v304/src/recaman.c b/libIRDB-transform/tests/mitre/TC_C_191_v304/src/recaman.c similarity index 96% rename from libtransform/tests/mitre/TC_C_191_v304/src/recaman.c rename to libIRDB-transform/tests/mitre/TC_C_191_v304/src/recaman.c index 95c710545..2db8bc266 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/src/recaman.c +++ b/libIRDB-transform/tests/mitre/TC_C_191_v304/src/recaman.c @@ -1,190 +1,190 @@ -/******************************************* -** -** Copyright (C) 2011 The MITRE Corporation. ALL RIGHTS RESERVED -** -** Author: Mitchell Wills -** Date: 6/28/2011 -** -** Base Test Program -- recaman.c -** -** Variant Test Case Program -** -** -** The original base was altered so that when calculating a buffer index the -** number underflows causing the final buffer index to be negative -** -** STONESOUP Weakness Class: Number Handling -** CWE ID: CWE-191 -** Variant Spreadsheet Rev #: 2 -** Variant Spreadsheet ID: 304 -** -** Variant Features: -** Source Taint: PIPE -** Data Type: SIGNED_SHORT -** Control Flow: SEQUENCE -** Data Flow: BUFFER_ADDRESS_ARRAY_INDEX -** -** Initial Testing: (x means yes, - means no) -** Tested in MS Windows XP 32bit x -** Tested in MS Windows 7 64bit - -** Tested in Ubuntu10_10 Linux 32bit - -** Tested in Ubuntu10_10 Linux 64bit - -** -** Workflow: -** Created:6/28/2011 -** 1st Vett: <programmer> on <date> -** 2nd Vett: <peer> on <date> -** 3rd Vett: <teamleader> on <date> -** 4th Vett: Fortify Issues Fixed on <date> -** 5th Vett: Tested in Harness on <date> -** -** -** I/0 Pairs: -** Good: 1st Set: -** 2nd Set: -** 3rd Set: -** 4th Set: -** 5th Set: -** Bad: 1st Set: -*********************************************/ - -//Recaman's Sequence Generator -#include <stdio.h> -#include <stdlib.h> -#include <ctype.h> - -//Function prototypes -int mygeti (int *); -int recaman(int); -int inSequence(int, int *, int); - -//Securely read in the input number -//Buff[7] means that a maximum of 6 digits can be read -//Any input with a 6 digits in the beginning is valid -//e.g. 123456fffff is valid but ff123456 and 1234ff6234234 are not - -int main(void) -{ - printf("*************************************\n"); - printf("*** Recaman's Sequence Generator ***\n"); - printf("*************************************\n\n"); - - short value; - fputs("Enter a sequence number [ >= 0 ]: ", stdout); - fflush(stdout); - - fputs("A0", stdout); - fflush(stdout); - - char *end, buff [7]; - char* rBuff = fgets(buff, sizeof buff, stdin);//STONESOUP:INTERACTION_POINT //STONESOUP:feature-PIPE - if(!rBuff){//reached EOF - value = -1; - return 1; - } - fputs("A", stdout); - fflush(stdout); - value = (short) strtol(buff, &end, 10); - fflush(stdin); - if(!(!isspace(*buff) && end != buff && (*end == '\n' || *end == '\0'))) - return 1; - - fputs("B", stdout); - fflush(stdout); - - //-1 is the "magic" value that will quit out of the while loop - if (value == -1) { - return 1; - } - //Otherwise, send the value to the recaman function if its greater than zero - else if (value >= 0) { - fputs("C", stdout); - fflush(stdout); - signed short stuff[100];//STONESOUP:feature-SIGNED_SHORT - - short y = (short)(-(-32700-value))/(short)350;//STONESOUP:CROSSOVER_POINT - short x[2]={0, y}; - - *(stuff+x[1]) = value;//STONESOUP:TRIGGER_POINT //STONESOUP:feature-BUFFER_ADDRESS_ARRAY_INDEX - -// CLARK: if you uncomment the printf below, we will get a successful detection - printf("debug: value: %d %d\n", value, *(stuff+x[1])); // this causes the detection - - printf("%d\n\n", recaman(*(stuff+x[1]))); - } - else { - printf("Error: Please enter zero or a positive integer.\n\n"); - } - - return 0; -} - -//Calculate the actual sequence -//A(0) = 0. a(m) = a(m-1) - 1 if a(m) is positive and not already in the sequence, otherwise a(m) = a(m-1) + m. -//The first few numbers in the Recaman's Sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9. -int recaman(int sequenceNo) -{ - int *sequence = NULL; - int i; - int currentValue; - int outputValue = 0; - -printf("sequenceNo = %d\n", sequenceNo); - - //Create the dynamic array for storing the sequence - sequence = (int*) calloc((sequenceNo+1),sizeof(int)); - - //Check to make sure the calloc call succeeded - if (sequence == NULL) { - printf("ERROR: Calloc memory allocation failed\n"); - return -1; - } - - //Setup the sequence precondition - //a(0) = 0 - sequence[0] = 0; - - for (i = 1; i <= sequenceNo; i++) { - currentValue = (sequence[i-1] - i); - - //Do the > 0 check: - if(currentValue > 0) { - //Check if the value has already been seen - if (!inSequence(currentValue, sequence, sequenceNo)) { - //Add it to the sequence if not - sequence[i] = currentValue; - } - else { - //Otherwise, do the addition method and add it to the sequence - sequence[i] = (sequence[i-1] + i); - } - } - //If the value is <0 then do the addition method and add it to the sequence - else { - sequence[i] = (sequence[i-1] + i); - } - } - - //Set the output value - outputValue = sequence[sequenceNo]; - - //Free the dynamic array - free(sequence); - sequence = NULL; - - return outputValue; -} - -//See if the input value is already in the sequence -int inSequence(int value, int *seq, int size) -{ - int j; - - for (j=0; j > -size; j--) { - if (seq[-j] == value) { - return 1; - } - } - - return 0; -} +/******************************************* +** +** Copyright (C) 2011 The MITRE Corporation. ALL RIGHTS RESERVED +** +** Author: Mitchell Wills +** Date: 6/28/2011 +** +** Base Test Program -- recaman.c +** +** Variant Test Case Program +** +** +** The original base was altered so that when calculating a buffer index the +** number underflows causing the final buffer index to be negative +** +** STONESOUP Weakness Class: Number Handling +** CWE ID: CWE-191 +** Variant Spreadsheet Rev #: 2 +** Variant Spreadsheet ID: 304 +** +** Variant Features: +** Source Taint: PIPE +** Data Type: SIGNED_SHORT +** Control Flow: SEQUENCE +** Data Flow: BUFFER_ADDRESS_ARRAY_INDEX +** +** Initial Testing: (x means yes, - means no) +** Tested in MS Windows XP 32bit x +** Tested in MS Windows 7 64bit - +** Tested in Ubuntu10_10 Linux 32bit - +** Tested in Ubuntu10_10 Linux 64bit - +** +** Workflow: +** Created:6/28/2011 +** 1st Vett: <programmer> on <date> +** 2nd Vett: <peer> on <date> +** 3rd Vett: <teamleader> on <date> +** 4th Vett: Fortify Issues Fixed on <date> +** 5th Vett: Tested in Harness on <date> +** +** +** I/0 Pairs: +** Good: 1st Set: +** 2nd Set: +** 3rd Set: +** 4th Set: +** 5th Set: +** Bad: 1st Set: +*********************************************/ + +//Recaman's Sequence Generator +#include <stdio.h> +#include <stdlib.h> +#include <ctype.h> + +//Function prototypes +int mygeti (int *); +int recaman(int); +int inSequence(int, int *, int); + +//Securely read in the input number +//Buff[7] means that a maximum of 6 digits can be read +//Any input with a 6 digits in the beginning is valid +//e.g. 123456fffff is valid but ff123456 and 1234ff6234234 are not + +int main(void) +{ + printf("*************************************\n"); + printf("*** Recaman's Sequence Generator ***\n"); + printf("*************************************\n\n"); + + short value; + fputs("Enter a sequence number [ >= 0 ]: ", stdout); + fflush(stdout); + + fputs("A0", stdout); + fflush(stdout); + + char *end, buff [7]; + char* rBuff = fgets(buff, sizeof buff, stdin);//STONESOUP:INTERACTION_POINT //STONESOUP:feature-PIPE + if(!rBuff){//reached EOF + value = -1; + return 1; + } + fputs("A", stdout); + fflush(stdout); + value = (short) strtol(buff, &end, 10); + fflush(stdin); + if(!(!isspace(*buff) && end != buff && (*end == '\n' || *end == '\0'))) + return 1; + + fputs("B", stdout); + fflush(stdout); + + //-1 is the "magic" value that will quit out of the while loop + if (value == -1) { + return 1; + } + //Otherwise, send the value to the recaman function if its greater than zero + else if (value >= 0) { + fputs("C", stdout); + fflush(stdout); + signed short stuff[100];//STONESOUP:feature-SIGNED_SHORT + + short y = (short)(-(-32700-value))/(short)350;//STONESOUP:CROSSOVER_POINT + short x[2]={0, y}; + + *(stuff+x[1]) = value;//STONESOUP:TRIGGER_POINT //STONESOUP:feature-BUFFER_ADDRESS_ARRAY_INDEX + +// CLARK: if you uncomment the printf below, we will get a successful detection + printf("debug: value: %d %d\n", value, *(stuff+x[1])); // this causes the detection + + printf("%d\n\n", recaman(*(stuff+x[1]))); + } + else { + printf("Error: Please enter zero or a positive integer.\n\n"); + } + + return 0; +} + +//Calculate the actual sequence +//A(0) = 0. a(m) = a(m-1) - 1 if a(m) is positive and not already in the sequence, otherwise a(m) = a(m-1) + m. +//The first few numbers in the Recaman's Sequence is 0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9. +int recaman(int sequenceNo) +{ + int *sequence = NULL; + int i; + int currentValue; + int outputValue = 0; + +printf("sequenceNo = %d\n", sequenceNo); + + //Create the dynamic array for storing the sequence + sequence = (int*) calloc((sequenceNo+1),sizeof(int)); + + //Check to make sure the calloc call succeeded + if (sequence == NULL) { + printf("ERROR: Calloc memory allocation failed\n"); + return -1; + } + + //Setup the sequence precondition + //a(0) = 0 + sequence[0] = 0; + + for (i = 1; i <= sequenceNo; i++) { + currentValue = (sequence[i-1] - i); + + //Do the > 0 check: + if(currentValue > 0) { + //Check if the value has already been seen + if (!inSequence(currentValue, sequence, sequenceNo)) { + //Add it to the sequence if not + sequence[i] = currentValue; + } + else { + //Otherwise, do the addition method and add it to the sequence + sequence[i] = (sequence[i-1] + i); + } + } + //If the value is <0 then do the addition method and add it to the sequence + else { + sequence[i] = (sequence[i-1] + i); + } + } + + //Set the output value + outputValue = sequence[sequenceNo]; + + //Free the dynamic array + free(sequence); + sequence = NULL; + + return outputValue; +} + +//See if the input value is already in the sequence +int inSequence(int value, int *seq, int size) +{ + int j; + + for (j=0; j > -size; j--) { + if (seq[-j] == value) { + return 1; + } + } + + return 0; +} diff --git a/libtransform/tests/mitre/TC_C_196_v459/README b/libIRDB-transform/tests/mitre/TC_C_196_v459/README similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/README rename to libIRDB-transform/tests/mitre/TC_C_196_v459/README diff --git a/libtransform/tests/mitre/TC_C_196_v459/Release/makefile b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/makefile similarity index 95% rename from libtransform/tests/mitre/TC_C_196_v459/Release/makefile rename to libIRDB-transform/tests/mitre/TC_C_196_v459/Release/makefile index 31349eef4..de71eb65e 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/Release/makefile +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/makefile @@ -1,44 +1,44 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - --include ../makefile.init - -RM := rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include subdir.mk --include src/subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: TC_C_196_v459 - -# Tool invocations -TC_C_196_v459: $(OBJS) $(USER_OBJS) - @echo 'Building target: $@' - @echo 'Invoking: MinGW C Linker' - $(SS_LNK) -o"TC_C_196_v459" $(OBJS) $(USER_OBJS) $(LIBS)$ $(SS_LDFLAGS) - @echo 'Finished building target: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) TC_C_196_v459 - -@echo ' ' - -.PHONY: all clean dependents -.SECONDARY: - --include ../makefile.targets +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include src/subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: TC_C_196_v459 + +# Tool invocations +TC_C_196_v459: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: MinGW C Linker' + $(SS_LNK) -o"TC_C_196_v459" $(OBJS) $(USER_OBJS) $(LIBS)$ $(SS_LDFLAGS) + @echo 'Finished building target: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES) TC_C_196_v459 + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/libtransform/tests/mitre/TC_C_196_v459/Release/objects.mk b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/objects.mk similarity index 96% rename from libtransform/tests/mitre/TC_C_196_v459/Release/objects.mk rename to libIRDB-transform/tests/mitre/TC_C_196_v459/Release/objects.mk index dc31e16c6..742c2da04 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/Release/objects.mk +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/objects.mk @@ -1,8 +1,8 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -USER_OBJS := - -LIBS := - +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/libtransform/tests/mitre/TC_C_191_v304/Release/sources.mk b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/sources.mk similarity index 96% rename from libtransform/tests/mitre/TC_C_191_v304/Release/sources.mk rename to libIRDB-transform/tests/mitre/TC_C_196_v459/Release/sources.mk index 6975694ac..57cf3c3f1 100644 --- a/libtransform/tests/mitre/TC_C_191_v304/Release/sources.mk +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/sources.mk @@ -1,17 +1,17 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -O_SRCS := -C_SRCS := -S_UPPER_SRCS := -OBJ_SRCS := -ASM_SRCS := -OBJS := -C_DEPS := -EXECUTABLES := - -# Every subdirectory with source files must be described here +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +EXECUTABLES := + +# Every subdirectory with source files must be described here SUBDIRS := \ src \ - + diff --git a/libtransform/tests/mitre/TC_C_196_v459/Release/src/countlines.d b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/countlines.d similarity index 98% rename from libtransform/tests/mitre/TC_C_196_v459/Release/src/countlines.d rename to libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/countlines.d index ecb1a1678..61403b494 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/Release/src/countlines.d +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/countlines.d @@ -1 +1 @@ -src/countlines.d src/countlines.o: ../src/countlines.c +src/countlines.d src/countlines.o: ../src/countlines.c diff --git a/libtransform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk similarity index 97% rename from libtransform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk rename to libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk index d4424adee..bfc8b90c7 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/Release/src/subdir.mk @@ -1,24 +1,24 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ -../src/countlines.c - +../src/countlines.c + OBJS += \ -./src/countlines.o - +./src/countlines.o + C_DEPS += \ -./src/countlines.d - - -# Each subdirectory must supply rules for building sources it contributes -src/%.o: ../src/%.c - @echo 'Building file: $<' - @echo 'Invoking: GCC C Compiler' - $(SS_CC) -O0 -Wall -c $(SS_CFLAGS) $(SS_SPECIFIC_CFLAGS) -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - - +./src/countlines.d + + +# Each subdirectory must supply rules for building sources it contributes +src/%.o: ../src/%.c + @echo 'Building file: $<' + @echo 'Invoking: GCC C Compiler' + $(SS_CC) -O0 -Wall -c $(SS_CFLAGS) $(SS_SPECIFIC_CFLAGS) -fmessage-length=0 -std=c99 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/libtransform/tests/mitre/TC_C_196_v459/io-specifications/io-Long File Name.xml b/libIRDB-transform/tests/mitre/TC_C_196_v459/io-specifications/io-Long File Name.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/io-specifications/io-Long File Name.xml rename to libIRDB-transform/tests/mitre/TC_C_196_v459/io-specifications/io-Long File Name.xml diff --git a/libtransform/tests/mitre/TC_C_196_v459/io-specifications/io-good.xml b/libIRDB-transform/tests/mitre/TC_C_196_v459/io-specifications/io-good.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/io-specifications/io-good.xml rename to libIRDB-transform/tests/mitre/TC_C_196_v459/io-specifications/io-good.xml diff --git a/libtransform/tests/mitre/TC_C_196_v459/metaData.xml b/libIRDB-transform/tests/mitre/TC_C_196_v459/metaData.xml similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/metaData.xml rename to libIRDB-transform/tests/mitre/TC_C_196_v459/metaData.xml diff --git a/libtransform/tests/mitre/TC_C_196_v459/src/Makefile b/libIRDB-transform/tests/mitre/TC_C_196_v459/src/Makefile similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/src/Makefile rename to libIRDB-transform/tests/mitre/TC_C_196_v459/src/Makefile diff --git a/libtransform/tests/mitre/TC_C_196_v459/src/countlines.c b/libIRDB-transform/tests/mitre/TC_C_196_v459/src/countlines.c similarity index 97% rename from libtransform/tests/mitre/TC_C_196_v459/src/countlines.c rename to libIRDB-transform/tests/mitre/TC_C_196_v459/src/countlines.c index 38f00ba7b..cecacf59b 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/src/countlines.c +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/src/countlines.c @@ -1,305 +1,305 @@ -/******************************************* -** -** Copyright (C) 2011 The MITRE Corporation. ALL RIGHTS RESERVED -** -** Author: Mitchell Wills -** Date: 6/16/2011 -** -** Base Test Program -- countlines.c -** -** Variant Test Case Program -** -** This Base Test Program counts the number of lines of code in a Java Program -** ignoring whitespace and comment lines. It takes as input a single file that is -** located in the same directory as the executable. Note that technically this -** doesn't have to be a .java file and any file will work. This program just looks for -** comments that follow the Java language specification. -** -** Note that it is assumed that all lines of code are under 256 characters. If longer -** lines are encountered, then the counts will be incorrect. Also a /* sequence that -** appears within an escaped string (e.g. "A /* causes an error.") will lead to incorrect -** counts as the algorithim used will not recognize the escaped string and think this is -** the start of a multiline comment. -** -** The program has the following basic flow: -** -** - get filename -** - open file -** - read line -** - if it meets criteria increment counter -** - read next line -** - close file -** - output line count -** -** -** The original base was altered so that the loop counter used to check the file path for -** illegal characters is cast from a signed byte to an unsigned byte. When the file name -** is long the index becomes negative and negative memory is accessed and the program will -** go into an infinite loop (if not 0s exist in the 128 bytes before the buffer) or it will -** no validate all the characters so there is a possibility for path traversal. -** -** STONESOUP Weakness Class: Number Handling -** CWE ID: CWE-196 -** Variant Spreadsheet Rev #: 2 -** Variant Spreadsheet ID: 459 -** -** Variant Features: -** Source Taint: COMMAND_LINE -** Data Type: ARRAY -** Control Flow: LOOP_COMPLEXITY_TEST -** Data Flow: ADDRESS_AS_A_LINEAR_EXPRESSION -** -** Initial Testing: (x means yes, - means no) -** Tested in MS Windows XP 32bit x -** Tested in MS Windows 7 64bit - -** Tested in Ubuntu10_10 Linux 32bit - -** Tested in Ubuntu10_10 Linux 64bit - -** -** Workflow: -** Created:6/16/2011 -** 1st Vett: <programmer> on <date> -** 2nd Vett: <peer> on <date> -** 3rd Vett: <teamleader> on <date> -** 4th Vett: Fortify Issues Fixed on <date> -** 5th Vett: Tested in Harness on <date> -** -** -** I/0 Pairs: -** Good: 1st Set: -** 2nd Set: -** 3rd Set: -** 4th Set: -** 5th Set: -** Bad: 1st Set: -*********************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> - -#define DEBUG 0 - -int main (int argc, char *argv[]) -{ - FILE *fp; - - char filename[256];//STONESOUP:feature-ARRAY - char line[256]; - - char *line_pointer; - - int line_already_counted; - int multi_line_comment; - int total_lines; - int lines_of_code; - - - signed char getI(unsigned char i){ - return (signed char)i; - } - - unsigned char i; - - // An incorrect number of arguments were supplied. Let the user know the expected format of - // the command line. One user supplied argument is expected. Remember that the first argument - // is always the program name so we really need to check that 2 arguments exist. - - if (argc != 2) - { - printf("\nERROR: Usage: countlines <filename>\n"); - return(EXIT_FAILURE); - } - - // Get the input that was supplied on the command line. One argument should be there. This - // argument is the name of the .java file that is being counted. - // - // For the file name argument, this code will only grab the first 255 characters from the - // command line argument, placing a NULL terminator at the end. - - memset(filename, '\0', 256); - strncpy(filename, argv[1], 255);//STONESOUP:INTERACTION_POINT //STONESOUP:feature-COMMAND_LINE - filename[255] = '\0'; - - // Validate that the filename provided is just a filename and not a path to some other - // directory. We do this through a blacklist that excludes slashes (both forward and - // backward) and the double dot sequence. - // - // Note that we only loop from 0 to 255 since the last character should be a NULL - // and there is no need to double check this. In addition, this guards against any - // possible buffer overread when we check filename[i+1]. - - for (i=0;getI(i)<255;i++)//STONESOUP:CROSSOVER_POINT //STONESOUP:TRIGGER_POINT //STONESOUP:feature-LOOP_COMPLEXITY_TEST - { - printf("%d %c\n", (signed char)i, *(filename+sizeof(signed char)*(signed char)i) ); - if (*(filename+sizeof(char)*(signed char)i)=='\0') break; - - if (*(filename+sizeof(char)*(signed char)i)=='\\' /*|| filename[(signed char)*(i+1)]=='/'*/) - { - printf("\nERROR: Filename must not contain a slash character.\n"); - return(EXIT_FAILURE); - } - - if (*(filename+sizeof(char)*(signed char)i)==':') - { - printf("\nERROR: Filename must not contain a colon character.\n"); - return(EXIT_FAILURE); - } - - if (*(filename+sizeof(char)*(signed char)i)=='.' && *(filename+sizeof(char)*((signed char)i+1))=='.') //STONESOUP:feature-ADDRESS_AS_A_LINEAR_EXPRESSION - { - printf("\nERROR: Filename must not contain a double dot (e.g. '..') sequence.\n"); - return(EXIT_FAILURE); - } - } - // Open the file in readonly mode. - - fp = fopen(filename, "r"); - if (fp == NULL) - { - printf("\nERROR: Cannot open file.\n"); - return(EXIT_FAILURE); - } - - // After initializing variables, loop through each line of the file using fgets(). The function - // fgets(str, num, fp) reads up to num - 1 characters from the file stream fp and dumps them - // into str. fgets() will stop when it reaches the end of a line, in which case str will be - // terminated with a newline. If fgets() reaches num - 1 characters or encounters the EOF, - // str will be null-terminated. fgets() returns str on success, and NULL on an error. - - multi_line_comment = 0; - total_lines = 0; - lines_of_code = 0; - - memset(line, '\0', 256); - - while (fgets(line,256,fp) != NULL) - { - total_lines++; - - // We are reading a new line so we need to reset the line_already_counted flag since - // it obviously hasn't been counted yet. - - line_already_counted = 0; - - // Since fgets() may terminate a string with a newline ... we need to strip any trailing - // '\n' and replace it with a NULL character. - - if (line[strlen(line)-1] == '\n') line[strlen(line)-1] = '\0'; - - // Set the line_pointer to the first character of the line. - - line_pointer = line; - - // We are now ready to parse the line character by character. - - while (*line_pointer != '\0') - { - // If we are currently in a multi line scenario, then we need to check if we have hit - // an end tag. Otherwise we just advance the pointer and keep looping. - - if (multi_line_comment == 1) - { - if (*line_pointer == '*') - { - // Advance the line_pointer. We need to check for the NULL character - // and break if found. If we don't do this, then the next line_pointer++ - //call (before the start of the next iteration) will advance us out of bounds. - - line_pointer++; - if (*line_pointer == '\0') break; - - if (*line_pointer == '/') - { - // An end tag has been found! Reset the multi_line_comment. - // Note that we still need to advance the pointer and continue - // the loop. - - multi_line_comment = 0; - } - } - - line_pointer++; - continue; - } - - // If the current character is a whitespace, then skip it and continue the loop - // inorder to examine the next character. - - if (isspace(*line_pointer) != 0) - { - line_pointer++; - continue; - } - - // If the current character is a slash, then we need to look at the following - // character to see if the line is a Java comment. If we are looking at a Java - // comment line, then just break out of the loop without incrementing the - // line counter. - - if (*line_pointer == '/') - { - // Advance the line_pointer. We need to check for the NULL character - // and break if found. If we don't do this, then the next line_pointer++ - //call (before the start of the next iteration) will advance us out of bounds. - - line_pointer++; - if (*line_pointer == '\0') break; - - // If the next character is a slash as well, then a single line comment has - // been found. The rest of this line is not code, so break out of this loop. - - if (*line_pointer == '/') break; - - // If the next character is an asteric, then a multi-line comment has been - // found. We now need to skip every line until the end of the comment. To - // do this, we will turn on the multi_line_comment flag and continue - // processing this line (and any following line) looking for the closing tag. - //Note that the end of the comment may contain code on the rest of the - // line after the closing comment tag. - - if (*line_pointer == '*') - { - multi_line_comment = 1; - line_pointer++; - continue; - } - - // Note that if we reach here, a Java comment was NOT found, so we should - // fall through to the default processing and count the current line as a - // valid line of code. - } - - // A line ofJava code has been found! If the line has not already been counted, then - // increment the line counter. - - if (line_already_counted == 0) - { - if (DEBUG) printf("DEBUG: %s\n", line_pointer); - lines_of_code++; - line_already_counted = 1; - } - - // Move the line pointer to the next character in the line so that the next - // iteration of the current loop doesn't try to process the same character. - - line_pointer++; - } - } - - // We are done with the file so close it. - - if (fclose(fp)) - { - printf("\nERROR: File close error.\n"); - return(EXIT_FAILURE); - } - - // We have finished looking at each line in the file, and now have the line count. So print it!! - - if (DEBUG) printf("\nDEBUG: The file '%s' contains %d total lines, of which %d are code.\n\n", filename, total_lines, lines_of_code); - printf("\nRESULT: %d", lines_of_code); - return(EXIT_SUCCESS); -} - -/* End of file */ +/******************************************* +** +** Copyright (C) 2011 The MITRE Corporation. ALL RIGHTS RESERVED +** +** Author: Mitchell Wills +** Date: 6/16/2011 +** +** Base Test Program -- countlines.c +** +** Variant Test Case Program +** +** This Base Test Program counts the number of lines of code in a Java Program +** ignoring whitespace and comment lines. It takes as input a single file that is +** located in the same directory as the executable. Note that technically this +** doesn't have to be a .java file and any file will work. This program just looks for +** comments that follow the Java language specification. +** +** Note that it is assumed that all lines of code are under 256 characters. If longer +** lines are encountered, then the counts will be incorrect. Also a /* sequence that +** appears within an escaped string (e.g. "A /* causes an error.") will lead to incorrect +** counts as the algorithim used will not recognize the escaped string and think this is +** the start of a multiline comment. +** +** The program has the following basic flow: +** +** - get filename +** - open file +** - read line +** - if it meets criteria increment counter +** - read next line +** - close file +** - output line count +** +** +** The original base was altered so that the loop counter used to check the file path for +** illegal characters is cast from a signed byte to an unsigned byte. When the file name +** is long the index becomes negative and negative memory is accessed and the program will +** go into an infinite loop (if not 0s exist in the 128 bytes before the buffer) or it will +** no validate all the characters so there is a possibility for path traversal. +** +** STONESOUP Weakness Class: Number Handling +** CWE ID: CWE-196 +** Variant Spreadsheet Rev #: 2 +** Variant Spreadsheet ID: 459 +** +** Variant Features: +** Source Taint: COMMAND_LINE +** Data Type: ARRAY +** Control Flow: LOOP_COMPLEXITY_TEST +** Data Flow: ADDRESS_AS_A_LINEAR_EXPRESSION +** +** Initial Testing: (x means yes, - means no) +** Tested in MS Windows XP 32bit x +** Tested in MS Windows 7 64bit - +** Tested in Ubuntu10_10 Linux 32bit - +** Tested in Ubuntu10_10 Linux 64bit - +** +** Workflow: +** Created:6/16/2011 +** 1st Vett: <programmer> on <date> +** 2nd Vett: <peer> on <date> +** 3rd Vett: <teamleader> on <date> +** 4th Vett: Fortify Issues Fixed on <date> +** 5th Vett: Tested in Harness on <date> +** +** +** I/0 Pairs: +** Good: 1st Set: +** 2nd Set: +** 3rd Set: +** 4th Set: +** 5th Set: +** Bad: 1st Set: +*********************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> + +#define DEBUG 0 + +int main (int argc, char *argv[]) +{ + FILE *fp; + + char filename[256];//STONESOUP:feature-ARRAY + char line[256]; + + char *line_pointer; + + int line_already_counted; + int multi_line_comment; + int total_lines; + int lines_of_code; + + + signed char getI(unsigned char i){ + return (signed char)i; + } + + unsigned char i; + + // An incorrect number of arguments were supplied. Let the user know the expected format of + // the command line. One user supplied argument is expected. Remember that the first argument + // is always the program name so we really need to check that 2 arguments exist. + + if (argc != 2) + { + printf("\nERROR: Usage: countlines <filename>\n"); + return(EXIT_FAILURE); + } + + // Get the input that was supplied on the command line. One argument should be there. This + // argument is the name of the .java file that is being counted. + // + // For the file name argument, this code will only grab the first 255 characters from the + // command line argument, placing a NULL terminator at the end. + + memset(filename, '\0', 256); + strncpy(filename, argv[1], 255);//STONESOUP:INTERACTION_POINT //STONESOUP:feature-COMMAND_LINE + filename[255] = '\0'; + + // Validate that the filename provided is just a filename and not a path to some other + // directory. We do this through a blacklist that excludes slashes (both forward and + // backward) and the double dot sequence. + // + // Note that we only loop from 0 to 255 since the last character should be a NULL + // and there is no need to double check this. In addition, this guards against any + // possible buffer overread when we check filename[i+1]. + + for (i=0;getI(i)<255;i++)//STONESOUP:CROSSOVER_POINT //STONESOUP:TRIGGER_POINT //STONESOUP:feature-LOOP_COMPLEXITY_TEST + { + printf("%d %c\n", (signed char)i, *(filename+sizeof(signed char)*(signed char)i) ); + if (*(filename+sizeof(char)*(signed char)i)=='\0') break; + + if (*(filename+sizeof(char)*(signed char)i)=='\\' /*|| filename[(signed char)*(i+1)]=='/'*/) + { + printf("\nERROR: Filename must not contain a slash character.\n"); + return(EXIT_FAILURE); + } + + if (*(filename+sizeof(char)*(signed char)i)==':') + { + printf("\nERROR: Filename must not contain a colon character.\n"); + return(EXIT_FAILURE); + } + + if (*(filename+sizeof(char)*(signed char)i)=='.' && *(filename+sizeof(char)*((signed char)i+1))=='.') //STONESOUP:feature-ADDRESS_AS_A_LINEAR_EXPRESSION + { + printf("\nERROR: Filename must not contain a double dot (e.g. '..') sequence.\n"); + return(EXIT_FAILURE); + } + } + // Open the file in readonly mode. + + fp = fopen(filename, "r"); + if (fp == NULL) + { + printf("\nERROR: Cannot open file.\n"); + return(EXIT_FAILURE); + } + + // After initializing variables, loop through each line of the file using fgets(). The function + // fgets(str, num, fp) reads up to num - 1 characters from the file stream fp and dumps them + // into str. fgets() will stop when it reaches the end of a line, in which case str will be + // terminated with a newline. If fgets() reaches num - 1 characters or encounters the EOF, + // str will be null-terminated. fgets() returns str on success, and NULL on an error. + + multi_line_comment = 0; + total_lines = 0; + lines_of_code = 0; + + memset(line, '\0', 256); + + while (fgets(line,256,fp) != NULL) + { + total_lines++; + + // We are reading a new line so we need to reset the line_already_counted flag since + // it obviously hasn't been counted yet. + + line_already_counted = 0; + + // Since fgets() may terminate a string with a newline ... we need to strip any trailing + // '\n' and replace it with a NULL character. + + if (line[strlen(line)-1] == '\n') line[strlen(line)-1] = '\0'; + + // Set the line_pointer to the first character of the line. + + line_pointer = line; + + // We are now ready to parse the line character by character. + + while (*line_pointer != '\0') + { + // If we are currently in a multi line scenario, then we need to check if we have hit + // an end tag. Otherwise we just advance the pointer and keep looping. + + if (multi_line_comment == 1) + { + if (*line_pointer == '*') + { + // Advance the line_pointer. We need to check for the NULL character + // and break if found. If we don't do this, then the next line_pointer++ + //call (before the start of the next iteration) will advance us out of bounds. + + line_pointer++; + if (*line_pointer == '\0') break; + + if (*line_pointer == '/') + { + // An end tag has been found! Reset the multi_line_comment. + // Note that we still need to advance the pointer and continue + // the loop. + + multi_line_comment = 0; + } + } + + line_pointer++; + continue; + } + + // If the current character is a whitespace, then skip it and continue the loop + // inorder to examine the next character. + + if (isspace(*line_pointer) != 0) + { + line_pointer++; + continue; + } + + // If the current character is a slash, then we need to look at the following + // character to see if the line is a Java comment. If we are looking at a Java + // comment line, then just break out of the loop without incrementing the + // line counter. + + if (*line_pointer == '/') + { + // Advance the line_pointer. We need to check for the NULL character + // and break if found. If we don't do this, then the next line_pointer++ + //call (before the start of the next iteration) will advance us out of bounds. + + line_pointer++; + if (*line_pointer == '\0') break; + + // If the next character is a slash as well, then a single line comment has + // been found. The rest of this line is not code, so break out of this loop. + + if (*line_pointer == '/') break; + + // If the next character is an asteric, then a multi-line comment has been + // found. We now need to skip every line until the end of the comment. To + // do this, we will turn on the multi_line_comment flag and continue + // processing this line (and any following line) looking for the closing tag. + //Note that the end of the comment may contain code on the rest of the + // line after the closing comment tag. + + if (*line_pointer == '*') + { + multi_line_comment = 1; + line_pointer++; + continue; + } + + // Note that if we reach here, a Java comment was NOT found, so we should + // fall through to the default processing and count the current line as a + // valid line of code. + } + + // A line ofJava code has been found! If the line has not already been counted, then + // increment the line counter. + + if (line_already_counted == 0) + { + if (DEBUG) printf("DEBUG: %s\n", line_pointer); + lines_of_code++; + line_already_counted = 1; + } + + // Move the line pointer to the next character in the line so that the next + // iteration of the current loop doesn't try to process the same character. + + line_pointer++; + } + } + + // We are done with the file so close it. + + if (fclose(fp)) + { + printf("\nERROR: File close error.\n"); + return(EXIT_FAILURE); + } + + // We have finished looking at each line in the file, and now have the line count. So print it!! + + if (DEBUG) printf("\nDEBUG: The file '%s' contains %d total lines, of which %d are code.\n\n", filename, total_lines, lines_of_code); + printf("\nRESULT: %d", lines_of_code); + return(EXIT_SUCCESS); +} + +/* End of file */ diff --git a/libtransform/tests/mitre/TC_C_196_v459/testData/1.java b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/1.java similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/testData/1.java rename to libIRDB-transform/tests/mitre/TC_C_196_v459/testData/1.java diff --git a/libtransform/tests/mitre/TC_C_196_v459/testData/2.java b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/2.java similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/testData/2.java rename to libIRDB-transform/tests/mitre/TC_C_196_v459/testData/2.java diff --git a/libtransform/tests/mitre/TC_C_196_v459/testData/3.java b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/3.java similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/testData/3.java rename to libIRDB-transform/tests/mitre/TC_C_196_v459/testData/3.java diff --git a/libtransform/tests/mitre/TC_C_196_v459/testData/4.java b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/4.java similarity index 100% rename from libtransform/tests/mitre/TC_C_196_v459/testData/4.java rename to libIRDB-transform/tests/mitre/TC_C_196_v459/testData/4.java diff --git a/libtransform/tests/mitre/TC_C_196_v459/testData/5.java b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/5.java similarity index 84% rename from libtransform/tests/mitre/TC_C_196_v459/testData/5.java rename to libIRDB-transform/tests/mitre/TC_C_196_v459/testData/5.java index 2fc9642d9..8d218b78f 100644 --- a/libtransform/tests/mitre/TC_C_196_v459/testData/5.java +++ b/libIRDB-transform/tests/mitre/TC_C_196_v459/testData/5.java @@ -1,11 +1,11 @@ -//hi -asdsfd -/*hello - -test*/ - -asfdsadf -adsfsadf - - +//hi +asdsfd +/*hello + +test*/ + +asfdsadf +adsfsadf + + 345345 \ No newline at end of file diff --git a/libtransform/tests/mul.c b/libIRDB-transform/tests/mul.c similarity index 100% rename from libtransform/tests/mul.c rename to libIRDB-transform/tests/mul.c diff --git a/libtransform/tests/sample_meds_int.annot b/libIRDB-transform/tests/sample_meds_int.annot similarity index 100% rename from libtransform/tests/sample_meds_int.annot rename to libIRDB-transform/tests/sample_meds_int.annot diff --git a/libtransform/tests/signed_add.64.c b/libIRDB-transform/tests/signed_add.64.c similarity index 100% rename from libtransform/tests/signed_add.64.c rename to libIRDB-transform/tests/signed_add.64.c diff --git a/libtransform/tests/signed_mul.32.c b/libIRDB-transform/tests/signed_mul.32.c similarity index 100% rename from libtransform/tests/signed_mul.32.c rename to libIRDB-transform/tests/signed_mul.32.c diff --git a/libtransform/tests/signed_mul.64.c b/libIRDB-transform/tests/signed_mul.64.c similarity index 100% rename from libtransform/tests/signed_mul.64.c rename to libIRDB-transform/tests/signed_mul.64.c diff --git a/libtransform/tests/signedness.64.unsigned.c b/libIRDB-transform/tests/signedness.64.unsigned.c similarity index 100% rename from libtransform/tests/signedness.64.unsigned.c rename to libIRDB-transform/tests/signedness.64.unsigned.c diff --git a/libtransform/tests/simpletest.c b/libIRDB-transform/tests/simpletest.c similarity index 100% rename from libtransform/tests/simpletest.c rename to libIRDB-transform/tests/simpletest.c diff --git a/libtransform/tests/test.signed_add.64.sh b/libIRDB-transform/tests/test.signed_add.64.sh similarity index 100% rename from libtransform/tests/test.signed_add.64.sh rename to libIRDB-transform/tests/test.signed_add.64.sh diff --git a/libtransform/tests/test.signed_mul.32.sh b/libIRDB-transform/tests/test.signed_mul.32.sh similarity index 100% rename from libtransform/tests/test.signed_mul.32.sh rename to libIRDB-transform/tests/test.signed_mul.32.sh diff --git a/libtransform/tests/test.signed_mul.64.sh b/libIRDB-transform/tests/test.signed_mul.64.sh similarity index 100% rename from libtransform/tests/test.signed_mul.64.sh rename to libIRDB-transform/tests/test.signed_mul.64.sh diff --git a/libtransform/tests/test.trunc.32.16.signed.sh b/libIRDB-transform/tests/test.trunc.32.16.signed.sh similarity index 100% rename from libtransform/tests/test.trunc.32.16.signed.sh rename to libIRDB-transform/tests/test.trunc.32.16.signed.sh diff --git a/libtransform/tests/test.trunc.32.16.unsigned.sh b/libIRDB-transform/tests/test.trunc.32.16.unsigned.sh similarity index 100% rename from libtransform/tests/test.trunc.32.16.unsigned.sh rename to libIRDB-transform/tests/test.trunc.32.16.unsigned.sh diff --git a/libtransform/tests/test.trunc.32.8.signed.sh b/libIRDB-transform/tests/test.trunc.32.8.signed.sh similarity index 100% rename from libtransform/tests/test.trunc.32.8.signed.sh rename to libIRDB-transform/tests/test.trunc.32.8.signed.sh diff --git a/libtransform/tests/test.trunc.32.8.unsigned.sh b/libIRDB-transform/tests/test.trunc.32.8.unsigned.sh similarity index 100% rename from libtransform/tests/test.trunc.32.8.unsigned.sh rename to libIRDB-transform/tests/test.trunc.32.8.unsigned.sh diff --git a/libtransform/tests/test.trunc.64.16.signed.sh b/libIRDB-transform/tests/test.trunc.64.16.signed.sh similarity index 100% rename from libtransform/tests/test.trunc.64.16.signed.sh rename to libIRDB-transform/tests/test.trunc.64.16.signed.sh diff --git a/libtransform/tests/test.trunc.64.16.unknown.sh b/libIRDB-transform/tests/test.trunc.64.16.unknown.sh similarity index 100% rename from libtransform/tests/test.trunc.64.16.unknown.sh rename to libIRDB-transform/tests/test.trunc.64.16.unknown.sh diff --git a/libtransform/tests/test.trunc.64.16.unsigned.sh b/libIRDB-transform/tests/test.trunc.64.16.unsigned.sh similarity index 100% rename from libtransform/tests/test.trunc.64.16.unsigned.sh rename to libIRDB-transform/tests/test.trunc.64.16.unsigned.sh diff --git a/libtransform/tests/test.trunc.64.32.signed.sh b/libIRDB-transform/tests/test.trunc.64.32.signed.sh similarity index 100% rename from libtransform/tests/test.trunc.64.32.signed.sh rename to libIRDB-transform/tests/test.trunc.64.32.signed.sh diff --git a/libtransform/tests/test.trunc.64.32.unsigned.sh b/libIRDB-transform/tests/test.trunc.64.32.unsigned.sh similarity index 100% rename from libtransform/tests/test.trunc.64.32.unsigned.sh rename to libIRDB-transform/tests/test.trunc.64.32.unsigned.sh diff --git a/libtransform/tests/test.trunc.64.8.signed.sh b/libIRDB-transform/tests/test.trunc.64.8.signed.sh similarity index 100% rename from libtransform/tests/test.trunc.64.8.signed.sh rename to libIRDB-transform/tests/test.trunc.64.8.signed.sh diff --git a/libtransform/tests/test.trunc.64.8.unknown.sh b/libIRDB-transform/tests/test.trunc.64.8.unknown.sh similarity index 100% rename from libtransform/tests/test.trunc.64.8.unknown.sh rename to libIRDB-transform/tests/test.trunc.64.8.unknown.sh diff --git a/libtransform/tests/test.trunc.64.8.unsigned.sh b/libIRDB-transform/tests/test.trunc.64.8.unsigned.sh similarity index 100% rename from libtransform/tests/test.trunc.64.8.unsigned.sh rename to libIRDB-transform/tests/test.trunc.64.8.unsigned.sh diff --git a/libtransform/tests/test.unsigned_add.64.sh b/libIRDB-transform/tests/test.unsigned_add.64.sh similarity index 100% rename from libtransform/tests/test.unsigned_add.64.sh rename to libIRDB-transform/tests/test.unsigned_add.64.sh diff --git a/libtransform/tests/test.unsigned_mul.32.sh b/libIRDB-transform/tests/test.unsigned_mul.32.sh similarity index 100% rename from libtransform/tests/test.unsigned_mul.32.sh rename to libIRDB-transform/tests/test.unsigned_mul.32.sh diff --git a/libtransform/tests/test.unsigned_mul.64.sh b/libIRDB-transform/tests/test.unsigned_mul.64.sh similarity index 100% rename from libtransform/tests/test.unsigned_mul.64.sh rename to libIRDB-transform/tests/test.unsigned_mul.64.sh diff --git a/libtransform/tests/testall b/libIRDB-transform/tests/testall similarity index 100% rename from libtransform/tests/testall rename to libIRDB-transform/tests/testall diff --git a/libtransform/tests/trunc.16.8.c b/libIRDB-transform/tests/trunc.16.8.c similarity index 100% rename from libtransform/tests/trunc.16.8.c rename to libIRDB-transform/tests/trunc.16.8.c diff --git a/libtransform/tests/trunc.32.16.signed.c b/libIRDB-transform/tests/trunc.32.16.signed.c similarity index 100% rename from libtransform/tests/trunc.32.16.signed.c rename to libIRDB-transform/tests/trunc.32.16.signed.c diff --git a/libtransform/tests/trunc.32.16.unsigned.c b/libIRDB-transform/tests/trunc.32.16.unsigned.c similarity index 100% rename from libtransform/tests/trunc.32.16.unsigned.c rename to libIRDB-transform/tests/trunc.32.16.unsigned.c diff --git a/libtransform/tests/trunc.32.8.signed.c b/libIRDB-transform/tests/trunc.32.8.signed.c similarity index 100% rename from libtransform/tests/trunc.32.8.signed.c rename to libIRDB-transform/tests/trunc.32.8.signed.c diff --git a/libtransform/tests/trunc.32.8.unsigned.c b/libIRDB-transform/tests/trunc.32.8.unsigned.c similarity index 100% rename from libtransform/tests/trunc.32.8.unsigned.c rename to libIRDB-transform/tests/trunc.32.8.unsigned.c diff --git a/libtransform/tests/trunc.64.16.signed.c b/libIRDB-transform/tests/trunc.64.16.signed.c similarity index 100% rename from libtransform/tests/trunc.64.16.signed.c rename to libIRDB-transform/tests/trunc.64.16.signed.c diff --git a/libtransform/tests/trunc.64.16.unknown.c b/libIRDB-transform/tests/trunc.64.16.unknown.c similarity index 100% rename from libtransform/tests/trunc.64.16.unknown.c rename to libIRDB-transform/tests/trunc.64.16.unknown.c diff --git a/libtransform/tests/trunc.64.16.unsigned.c b/libIRDB-transform/tests/trunc.64.16.unsigned.c similarity index 100% rename from libtransform/tests/trunc.64.16.unsigned.c rename to libIRDB-transform/tests/trunc.64.16.unsigned.c diff --git a/libtransform/tests/trunc.64.32.signed.c b/libIRDB-transform/tests/trunc.64.32.signed.c similarity index 100% rename from libtransform/tests/trunc.64.32.signed.c rename to libIRDB-transform/tests/trunc.64.32.signed.c diff --git a/libtransform/tests/trunc.64.32.unsigned.c b/libIRDB-transform/tests/trunc.64.32.unsigned.c similarity index 100% rename from libtransform/tests/trunc.64.32.unsigned.c rename to libIRDB-transform/tests/trunc.64.32.unsigned.c diff --git a/libtransform/tests/trunc.64.8.signed.c b/libIRDB-transform/tests/trunc.64.8.signed.c similarity index 100% rename from libtransform/tests/trunc.64.8.signed.c rename to libIRDB-transform/tests/trunc.64.8.signed.c diff --git a/libtransform/tests/trunc.64.8.unknown.c b/libIRDB-transform/tests/trunc.64.8.unknown.c similarity index 100% rename from libtransform/tests/trunc.64.8.unknown.c rename to libIRDB-transform/tests/trunc.64.8.unknown.c diff --git a/libtransform/tests/trunc.64.8.unsigned.c b/libIRDB-transform/tests/trunc.64.8.unsigned.c similarity index 100% rename from libtransform/tests/trunc.64.8.unsigned.c rename to libIRDB-transform/tests/trunc.64.8.unsigned.c diff --git a/libtransform/tests/unsigned_add.64.c b/libIRDB-transform/tests/unsigned_add.64.c similarity index 100% rename from libtransform/tests/unsigned_add.64.c rename to libIRDB-transform/tests/unsigned_add.64.c diff --git a/libtransform/tests/unsigned_add.c b/libIRDB-transform/tests/unsigned_add.c similarity index 100% rename from libtransform/tests/unsigned_add.c rename to libIRDB-transform/tests/unsigned_add.c diff --git a/libtransform/tests/unsigned_mul.32.c b/libIRDB-transform/tests/unsigned_mul.32.c similarity index 100% rename from libtransform/tests/unsigned_mul.32.c rename to libIRDB-transform/tests/unsigned_mul.32.c diff --git a/libtransform/tests/unsigned_mul.64.c b/libIRDB-transform/tests/unsigned_mul.64.c similarity index 100% rename from libtransform/tests/unsigned_mul.64.c rename to libIRDB-transform/tests/unsigned_mul.64.c diff --git a/libIRDB/include/util/IBT_Provenance.hpp b/libIRDB-util/include/IBT_Provenance.hpp similarity index 100% rename from libIRDB/include/util/IBT_Provenance.hpp rename to libIRDB-util/include/IBT_Provenance.hpp diff --git a/libIRDB/include/util/Provenance.hpp b/libIRDB-util/include/Provenance.hpp similarity index 100% rename from libIRDB/include/util/Provenance.hpp rename to libIRDB-util/include/Provenance.hpp diff --git a/libIRDB/include/util/insn_preds.hpp b/libIRDB-util/include/insn_preds.hpp similarity index 100% rename from libIRDB/include/util/insn_preds.hpp rename to libIRDB-util/include/insn_preds.hpp diff --git a/libIRDB/include/libIRDB-util.hpp b/libIRDB-util/include/libIRDB-util.hpp similarity index 91% rename from libIRDB/include/libIRDB-util.hpp rename to libIRDB-util/include/libIRDB-util.hpp index 84d4e257b..5b091d116 100644 --- a/libIRDB/include/libIRDB-util.hpp +++ b/libIRDB-util/include/libIRDB-util.hpp @@ -35,9 +35,9 @@ namespace libIRDB { -#include <util/insn_preds.hpp> -#include <util/IBT_Provenance.hpp> -#include <util/params.hpp> +#include <insn_preds.hpp> +#include <IBT_Provenance.hpp> +#include <params.hpp> }; diff --git a/libIRDB/include/util/params.hpp b/libIRDB-util/include/params.hpp similarity index 100% rename from libIRDB/include/util/params.hpp rename to libIRDB-util/include/params.hpp diff --git a/libIRDB/src/util/IBT_Provenance.cpp b/libIRDB-util/src/IBT_Provenance.cpp similarity index 100% rename from libIRDB/src/util/IBT_Provenance.cpp rename to libIRDB-util/src/IBT_Provenance.cpp diff --git a/libIRDB/src/util/Makefile b/libIRDB-util/src/Makefile similarity index 100% rename from libIRDB/src/util/Makefile rename to libIRDB-util/src/Makefile diff --git a/libIRDB/src/util/SConscript b/libIRDB-util/src/SConscript similarity index 86% rename from libIRDB/src/util/SConscript rename to libIRDB-util/src/SConscript index 6a872f20c..b57c532c1 100644 --- a/libIRDB/src/util/SConscript +++ b/libIRDB-util/src/SConscript @@ -14,7 +14,8 @@ files= ''' cpppath=''' $IRDB_SDK/include/ $SECURITY_TRANSFORMS_HOME/include/ - $SECURITY_TRANSFORMS_HOME/libIRDB/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include/ + $SECURITY_TRANSFORMS_HOME/libIRDB-util/include/ ''' #myenv.Append(CCFLAGS=" -Wall -W -Wextra -Wconversion ") diff --git a/libIRDB/src/util/SConstruct b/libIRDB-util/src/SConstruct similarity index 100% rename from libIRDB/src/util/SConstruct rename to libIRDB-util/src/SConstruct diff --git a/libIRDB/src/util/insn_preds.cpp b/libIRDB-util/src/insn_preds.cpp similarity index 100% rename from libIRDB/src/util/insn_preds.cpp rename to libIRDB-util/src/insn_preds.cpp diff --git a/libIRDB/src/util/params.cpp b/libIRDB-util/src/params.cpp similarity index 100% rename from libIRDB/src/util/params.cpp rename to libIRDB-util/src/params.cpp diff --git a/libIRDB/LICENSE.txt b/libIRDB/LICENSE.txt deleted file mode 100644 index 312fba3fc..000000000 --- a/libIRDB/LICENSE.txt +++ /dev/null @@ -1,14 +0,0 @@ -************************************************************************************* -* -* Unless otherwise specified, software artifacts in this directory and its -* subdirectories are subject to: -* -* GOVERNMENT PURPOSE RIGHTS -* -* The Government's rights to use, modify, reproduce, release, perform, display, or -* disclose this software are restricted by GOVERNMENT PURPOSE RIGHTS. -* -* Any reproduction of the software or portions thereof marked with this legend -* must also reproduce the markings. -* -************************************************************************************* diff --git a/libIRDB/Makefile.in b/libIRDB/Makefile.in deleted file mode 100644 index 2eda16e6f..000000000 --- a/libIRDB/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ - -CC=@CC@ -CXX=@CXX@ - -all: - cd src;make CC="$(CC)" CXX="$(CXX)" - ./install_libs.sh - cd test;make CC="$(CC)" CXX="$(CXX)" - - -clean: - cd src;make clean - cd test;make clean diff --git a/libIRDB/SConscript b/libIRDB/SConscript deleted file mode 100644 index 4c1cbe85d..000000000 --- a/libIRDB/SConscript +++ /dev/null @@ -1,10 +0,0 @@ -import os - -Import('env') - - -lib1=SConscript("src/SConscript") - - -ret=lib1 -Return('ret') diff --git a/libIRDB/SConstruct b/libIRDB/SConstruct deleted file mode 100644 index b5b7b78c5..000000000 --- a/libIRDB/SConstruct +++ /dev/null @@ -1,8 +0,0 @@ - - - -env=Environment() -Export('env') -lib=SConscript("SConscript") - -Return('lib') diff --git a/libIRDB/install_libs.sh b/libIRDB/install_libs.sh deleted file mode 100755 index 96de09642..000000000 --- a/libIRDB/install_libs.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -cd lib; -for i in *; -do - if test ! -f ../../lib/$i -o $i -nt ../../lib/$i ; then - echo Installing $i - cp $i ../../lib/; - fi -done - diff --git a/libIRDB/src/Makefile.in b/libIRDB/src/Makefile.in deleted file mode 100644 index bcf5ef6e8..000000000 --- a/libIRDB/src/Makefile.in +++ /dev/null @@ -1,11 +0,0 @@ - -CC=@CC@ -CXX=@CXX@ - -dirs=core cfg util syscall - -all: - for i in ${dirs}; do echo ${PWD}; cd $$i; make CC="$(CC)" CXX="$(CXX)" || exit 1; cd ..; done - -clean: - for i in ${dirs}; do echo ${PWD}; cd $$i; make clean || exit 1; cd ..; done diff --git a/libIRDB/src/SConscript b/libIRDB/src/SConscript deleted file mode 100644 index 439e5176c..000000000 --- a/libIRDB/src/SConscript +++ /dev/null @@ -1,17 +0,0 @@ -import os - -Import('env') - -tools=[] - -dirs=''' - cfg - core - syscall - util - ''' - -for i in Split(dirs): - tools=tools + SConscript(os.path.join(i,"SConscript")) - -Return('tools') diff --git a/libIRDB/src/SConstruct b/libIRDB/src/SConstruct deleted file mode 100644 index b5b7b78c5..000000000 --- a/libIRDB/src/SConstruct +++ /dev/null @@ -1,8 +0,0 @@ - - - -env=Environment() -Export('env') -lib=SConscript("SConscript") - -Return('lib') diff --git a/libtransform/tests/bin/ls_O3.exe b/libtransform/tests/bin/ls_O3.exe deleted file mode 100755 index cdbe0931c2b49ff1bcab208272a0508748ecfb2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352719 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 diff --git a/meds2pdb/SConscript b/meds2pdb/SConscript index 7c925ac42..ca7f56033 100644 --- a/meds2pdb/SConscript +++ b/meds2pdb/SConscript @@ -9,10 +9,9 @@ myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) cpppath=''' $IRDB_SDK/include $SECURITY_TRANSFORMS_HOME/include + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include $SECURITY_TRANSFORMS_HOME/libEXEIO/include - $SECURITY_TRANSFORMS_HOME/libIRDB/include $SECURITY_TRANSFORMS_HOME/libMEDSannotation/include - $SECURITY_TRANSFORMS_HOME/libtransform/include ''' files=Glob( Dir('.').srcnode().abspath+"/*.cpp") + Glob(Dir('.').srcnode().abspath+"/*.c") diff --git a/meds2pdb/elfreader.cpp b/meds2pdb/elfreader.cpp index 924dbdb04..51f10cece 100644 --- a/meds2pdb/elfreader.cpp +++ b/meds2pdb/elfreader.cpp @@ -22,8 +22,8 @@ #include <string.h> #include <stdio.h> #include <irdb-core> -#include "elfreader.h" #include <libIRDB-core.hpp> +#include "elfreader.h" using namespace std; using namespace IRDB_SDK; diff --git a/thanos/SConscript b/thanos/SConscript index 408e042ba..ed7ad18cc 100644 --- a/thanos/SConscript +++ b/thanos/SConscript @@ -8,7 +8,7 @@ myenv.Replace(SECURITY_TRANSFORMS_HOME=os.environ['SECURITY_TRANSFORMS_HOME']) cpppath=''' $IRDB_SDK/include - $SECURITY_TRANSFORMS_HOME/libIRDB/include + $SECURITY_TRANSFORMS_HOME/libIRDB-core/include ''' -- GitLab