Dear llvm and sva community:
This is to brief you the progress of SAFECode’s Memory Policy Hardening, for those who are interested to see the detailed proposal please consider [1] , for those who are interested to see the my working repository please consider [2]. During the previous weeks I have improved the robustness of bbac implementation in SAFECode.
I conclude the work done during this week as follows:
Testing:
- Fixed a bug in SpecializeCMSCalls. CFIChecks, which happens before SpecializeCMSCalls, produces a TargetList global variable. TargetList contains the targets of the specified function call and includes declarations of __loadcheck and __storecheck. The specialize functions use a cast which only accepts the callinst of __loadcheck and __storecheck, the users in the TargetList cause the crash.
- Fixed a bug in ExactCheckOpt which will cause safecode crash if the target basic block has only one instruction.
- Fixed a bug which caused the test failure of safecode/test/core/byval-001.c and byval-002.c.
- Successfully generate the gzip and flex using safecode with bbac support. Currently in will produce some load/store error at runtime, I will check is that a true positive error this week.
Plan for next week:
- Discuss with my mentor Dr. John Criswell about the support of VLA size alloca.
- Test the bbac implementation on other software and find if there is any bugs.
Please provide any feedback/suggestion including for format of this email.
I would also like to thanks my mentor John Criswell and other community members for providing quick help every time when I asked.
[1] SAFECode’s Memory Policy Hardening - Google Docs
[2] GitHub - zhengyang92/safecode-llvm37 at safecode+llvm37
Best regards,
Zhengyang.