Большинство языков программирования в той или иной степени небезопасны, и чем больше возможностей предоставляет язык программисту, тем больше в нём опасностей.Неделю назад я написАл на Си программу sighup, которая берёт из первого аргумена имя_демона, открывает файл /var/run/имя_демона.pid, читает оттуда номер_процесса и посылает ему SIGHUP. Программу предполагается сделать SetUID'ной, дав некой группе право рестартовать демоны (по типу shutdown). В программе я намеренно допустил две грубейшие ошибки, из-за которых программа уязвима, ежели запускающий передаст ей намеренно неправильный аргумент. И до сих пор никто из студентов (а это МФТИ) не нашёл ошибок; максимум была претензия, что я использовал единицу вместо имени сигнала. :(