Проблема заключалась в том, что по умолчанию подсистема проверки API не включена, и сообщения, которые вас интересовали, приходят оттуда.
Я не могу говорить о более старых версиях BoundsChecker, но у версии 10.5 нет особых проблем с этим тестом. Он сообщает правильные результаты и сам BoundsChecker не дает сбоя. Однако тестовое приложение делает это, потому что этот конкретный тестовый случай полностью повреждает стек вызовов, который привел к функции, в которой находился тестовый код, и как только эта функция завершается, приложение также делает это.
Результаты: 100 сообщений о переполнении записи в локальную переменную и 99 сообщений о том, что строка назначения не обнуляется. Технически, это второе сообщение неверно, но BoundsChecker ищет только нулевое завершение в границах самой строки назначения, и после первого вызова strcat оно больше не содержит нулевой байт в своих границах.
Отказ от ответственности: я работаю в MicroFocus как разработчик, работающий над BoundsChecker.