Системное программирование (C, C++, RUST)

 

  • Для отладки кода C, в том числе даже таких крупных проектов (напр. пропусков атак в них) как snort/suricata можно и нужно использовать отладчик QDB.
  • Разумная критика С 🙂
In the last few days, Linux maintainers disclosed a broadly available Linux kernel vulnerability that enables attackers to escape containers and get full control over the node. To be able to exploit this vulnerability, the attacker needs to be able to run code in the container and the container must have CAP_SYS_ADMIN privileges. Linux kernel and all major distro maintainers have released patches.

https://www.opennet.ru/opennews/art.shtml?num=56556

При передаче слишком большого параметра можно вызвать переполнение целочисленной переменной, используемой для расчета размера записываемых данных - в коде имеется проверка выхода за границу буфера "if (len > PAGE_SIZE - 2 - size)", которая не срабатывает, если значение size больше 4094 из-за целочисленного переполнения через нижнюю границу (integer underflow, при приведении 4096 - 2 - 4095 к unsigned int получится 2147483648).

Почти 3 года прожило получение рута в самой популярной серверной системе, причем в некоторых "в конфигурации по умолчанию". Потому что лучшие погромисты человечества не разобрали как 3 числа повычитать друг из друга. Это вам не произвольные каталоги в расте удалять, это другое))

> А квалификация раст программистов даже не позволит им понять что нужно сделать с тремя переменными ...
Как смешно ты извиваешься :)
А факт в том что это С программисты не справились с чиселками. Да не абы какие, а допущенные к ядру.
Не только, это же еще прошло кучу ревью, одобрено и вмерджено ментейнером.

>Просто твоя картина мира не позволяет тебе понять что раст этому никак не поможет.
Просто твоя картина мира не позволяет тебе понять что если разработчик меньше будет тратить времени на подсчеты выделений памяти и освобождений, то ему больше времени останеться на вот такие бажки.
C

Указатель – переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причём на самое его начало.

надоело объяснять чем указатель отличается от значения по указателю

С указателями бывают разные проблемы, например – падение кода (продукта) в связи с разыменованием нулевого указателя.

Разыменование нулевого указателя (CWE-476) представляет собой дефект, когда программа обращается по некорректному указателю к какому-то участку памяти. Такое обращение ведет к неопределенному поведению программы, что приводит в большинстве случаев к аварийному завершению программы.

Mutex – считается самым медленным способом блокировки/синхронизацит потоков, может значимо тормозить код. Поэтому когда можно без него – его не используют (код review можно не пройти из-за реализации решения с помощью mutex). Как алтернатива atomic или lock. Они считаются быстрее.

http://demin.ws/blog/russian/2012/05/05/atomic-spinlock-mutex/

Leave a Reply