При компиляции с помощью GCC при оптимизации -O2 memset будет вырезан и таким образом Ваше «затирание» памяти не произойдёт. Такого рода вещи очень важны при разработке крипто-модулей.
Вот подтверждение (результаты дизассемблирования), компиляция с помощью GCC 7.3 -O2:
xor_cipher_allocate():
mov esi, 16
mov edi, 1
jmp calloc
xor_cipher_free(xor_cipher_ctx*):
jmp free
main:
xor eax, eax
ret
Могу порекомендовать вот этот сайт для подобных экспериментов.
Небольшая неточность, Вы забыли преобразование типов (это мелочь), calloc возвращает void*.
Видите-ли тут проблема не в том, что у товарища два контроллера, у меня к примеру, один, но та же проблема, при включении система (Windows 10) не видит контроллера, и помогает вынуть/всунуть кредл. А так всё работает ОК, мы с другом играли в два контроллера без проблем.
Ещё, что нового увидел это версия GCC по умолчанию 5.3.1 (на 15.10 у меня была 5.2). После установки столкнулся с проблемой, что отсутствует “menu bar” и “dash” и не работал привычный ALT+CTRL+T. Оказалось, что отключился Unity Plugin. Для тех, кто столкнётся или столкнулся с таким то на помощь придёт:
> sudo apt-get install compizconfig-settings-manager
> ccsm
После чего запустится графическая утилитка где надо будет включить Unity Plugin.
Работает на GCC 7.3 -O2 и -O3.
При компиляции с помощью GCC при оптимизации -O2 memset будет вырезан и таким образом Ваше «затирание» памяти не произойдёт. Такого рода вещи очень важны при разработке крипто-модулей.
Вот подтверждение (результаты дизассемблирования), компиляция с помощью GCC 7.3 -O2:
Могу порекомендовать вот этот сайт для подобных экспериментов.
Небольшая неточность, Вы забыли преобразование типов (это мелочь), calloc возвращает void*.
> sudo apt-get install compizconfig-settings-manager
> ccsm
После чего запустится графическая утилитка где надо будет включить Unity Plugin.
(делал всё на Virtualbox 5.0.18 Ubuntu 15.10)