😁4👍2🤡1
#prog #c #itsec
В glibc выявили уязвимость, которая позволяет локально повысить права до root. Корень проблемы — очередной buffer overflow.
Что иронично, код, который внёс уязвимость, был нацелен на фикс другой проблемы.
В glibc выявили уязвимость, которая позволяет локально повысить права до root. Корень проблемы — очередной buffer overflow.
Что иронично, код, который внёс уязвимость, был нацелен на фикс другой проблемы.
www.opennet.ru
Уязвимость в glibc, позволяющая получить root-доступ в системе
Компания Qualys выявила опасную уязвимость (CVE-2023-6246) в стандартной Си-библиотеке Glibc, позволяющую через манипуляции с запуском SUID-приложений добиться выполнения своего кода с повышенными привилегиями. Исследователи смогли разработать рабочий эксплоит…
😁5😱1
#prog #c #rust #article
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
Porting libyaml to Safe Rust: Some Thoughts
Или о том, как автор перевёл libyaml, сконвертированный c2rust, в идиоматичный Rust-код. Почему? Этот код используется как бекенд для serde-yaml и при этом существующий интерфейс поверх не давал информацию о положении частей входа вне ошибок.
The result is not just safer and easier, it is also just as performant
Автор также более подробно рассказывает о тонкостях реализации на C и о том, как они изменились с переходом на Rust.
simonask.github.io
libyaml-safer
👍7
#prog #c #article
Why Not Just Do Simple C++ RAII in C?
В последнее время есть предложения для того, чтобы добавить в C defer. Разумеется, эта конструкция избыточна, если в языке есть RAII. Статья показывает, почему "просто добавить RAII в C" не сработает.
Why Not Just Do Simple C++ RAII in C?
В последнее время есть предложения для того, чтобы добавить в C defer. Разумеется, эта конструкция избыточна, если в языке есть RAII. Статья показывает, почему "просто добавить RAII в C" не сработает.
The Pasture
Why Not Just Do Simple C++ RAII in C?
Ever since I finished publishing the “defer” paper and successfully defended it on its first go-around (it now has tentative approval to go to a Technical Sp...
👍1
😁4🤝1
#prog #c #shell #menacingopensource
🥜 Pnut: A Self-Compiling C Transpiler Targeting Human-Readable POSIX Shell
⬇️
🥜 Pnut: A Self-Compiling C Transpiler Targeting Human-Readable POSIX Shell
int sum(int* a, int len) {
int i, sum = 0;
for (i = 0; i < len; i += 1) {
sum += a[i];
}
return sum;
}
⬇️
#!/bin/sh
set -e -u
: $((sum = i = len = a = 0))
_sum() { let a $2; let len $3
let i; let sum
sum=0
i=0
while [ $i -lt $len ] ; do
: $((sum += _$((a + i))))
: $((i += 1))
done
: $(($1 = sum))
endlet $1 sum i len a
}
# Runtime library
# Local variables
__=0
__SP=0
let() { # $1: variable name, $2: value (optional)
: $((__SP += 1)) $((__$__SP=$1)) # Push
: $(($1=${2-0})) # Init
}
endlet() { # $1: return variable
# $2...: function local variables
__ret=$1 # Don't overwrite return value
: $((__tmp = $__ret))
while [ $# -ge 2 ]; do
: $(($2 = __$__SP)) $((__SP -= 1)); # Pop
shift;
done
: $(($__ret=__tmp)) # Restore return value
}
GitHub
GitHub - udem-dlteam/pnut: 🥜 A Self-Compiling C Transpiler Targeting Human-Readable POSIX Shell
🥜 A Self-Compiling C Transpiler Targeting Human-Readable POSIX Shell - udem-dlteam/pnut
🤯14😁1
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