This media is not supported in your browser
VIEW IN TELEGRAM
😁43❤🔥17🔥2❤1🌚1
Yet another senior pomidor (by @gmelikov)
Интересный кейс подъехал: есть полезный сисколл copy_file_range, и если файловая система позволила принять через него запрос на копирование байтов больше, чем помещается в 32-битное число, то всё остальное будет забито нулями. Если бы я хотел написать кликбейтный…
#prog #c
А баг произошёл из-за того, что возвращаемое значение типа long сохранили в переменную типа int. И это, кстати, вполне себе ошибка, которую современные компиляторы легко ловят.
Позорище (и авторам glibc, и дилетантам Керниганну и Ритчи)
А баг произошёл из-за того, что возвращаемое значение типа long сохранили в переменную типа int. И это, кстати, вполне себе ошибка, которую современные компиляторы легко ловят.
Позорище (и авторам glibc, и дилетантам Керниганну и Ритчи)
👍14👎3🤡3🌚2😁1🤔1🖕1
#prog #c #rust #article
"Just Use Rust": A Best-Case Historical Study of Open Source Vulnerabilities in C (PDF)
"Just Use Rust": A Best-Case Historical Study of Open Source Vulnerabilities in C (PDF)
We identified 68 prominent open source projects with C code, collected their vulnerability history data, and used their CWE designations to explore a best-case speculation on how many vulnerabilities might have been prevented with Rust. We estimate that 58.2% of historical vulnerabilities in our selection of open source C projects would have been virtually impossible in Rust.
😢17😁13🤡7👍5🔥1🤔1
#prog #c #article #abnormalprogramming
Серия из трёх (на текущий момент) статей о странностях C
Weekend projects: getting silly with C
Getting silly with C, part (void*)2
Getting silly with C, part ~(~1<<1)
Наверное, мои самый любимые примеры кода из статей — это многострочный комментарий:
и абьюз type punning-а на сигнатуре
Серия из трёх (на текущий момент) статей о странностях C
Weekend projects: getting silly with C
Getting silly with C, part (void*)2
Getting silly with C, part ~(~1<<1)
Наверное, мои самый любимые примеры кода из статей — это многострочный комментарий:
#include <stdio.h>
int main() {
puts("Hello world");
asm("/*");
/* Nested comment */
for (int i = 0; i < 10; i++) puts("I LIKE PANCAKES!");
asm("*/");
puts("Goodbye world");
}
и абьюз type punning-а на сигнатуре
main для доставания "Главного ответа о вселенной, смысле жизни и всего такого" из воздуха:#include <stdio.h>
int main(int i) {
do do do do "baby shark!";
while (++i % 2);
while (i == 2);
while (i % 3);
while (i % 7);
printf("The answer is %d.\n", i);
}
😁12👍2🤯2🍌1
#prog #rust #c #article
Eurydice: a Rust to C compiler (yes)
Сделано для интеграции кода на Rust в существующие проекты на C без того, чтобы требовать наличие двух параллельных реализаций.
Присутствует чуть-чуть джеркования:
Eurydice: a Rust to C compiler (yes)
Eurydice is a compiler from Rust to C that aims to produce readable C code.
Сделано для интеграции кода на Rust в существующие проекты на C без того, чтобы требовать наличие двух параллельных реализаций.
Присутствует чуть-чуть джеркования:
Having a backwards-compat scenario where Rust can be compiled to C serves several purposes.
<...>
3. It allows for a census of problematic scenarios. By making the Rust version the default (and putting the fallback C behind a--write-us-an-emailflag), there is finally a way to enumerate those mythical users who cannot switch to Rust just yet.
❤4❤🔥3