- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
#include <iostream>
#include <ctime>
using namespace std;
#define SIZE 200000000
struct StackRazrivator {
int data[SIZE];
};
void razorvi() {
cout << "nachinau razrivat\n";
StackRazrivator r;
}
void razrivator() {
cout << "razrivator\n";
razorvi();
}
int main() {
cout << "start" << endl;
razrivator();
return 0;
}
MAPTbIwKA 20.02.2021 20:51 # 0
с оптимизацией наверное она выеинет нахуй твой разрыватор, и ничего не разорвет
а без оптимизации может в теории и порваца, не?
bormand 20.02.2021 21:05 # 0
На винде должен порваться т.к. chkstk пойдёт протыкивать страницы палочкой.
На прыщах, мне кажется, нет. Просто RSP уменьшится на 200кк, потом вернётся обратно. Надо какой-нибудь лог вывести после разрыватора, тогда порвёт.
MAPTbIwKA 20.02.2021 21:08 # 0
*при условии, что компилятор писание это не выкинет нахцй
pps: проверил на прыще, segfault там
bormand 20.02.2021 21:15 # 0
Стек протектор сработал:
orq $0x0,(%rsp)
Тоже по страничке протыкивает, получается.
bormand 20.02.2021 21:29 # 0
Стек рвётся из-за того, что весь фрейм резервируется сразу, а потом вызывается operator <<.
bormand 20.02.2021 21:38 # 0
guest6 20.02.2021 21:18 # 0
bormand 20.02.2021 21:41 # 0
hormand 20.02.2021 21:57 # 0
Сделай милость, обидься и уйди, хлопнув дверью.
guest6 20.02.2021 22:20 # 0
guest6 21.02.2021 02:31 # 0
bormand 21.02.2021 06:31 # 0
12 строка не вывелась потому что до нее управление реально не дошло. Место под фрейм выделилось в самом начале функции (конструкторы всегда срабатывают вовремя, а вот место может выделиться сразу). И вызов << упал от вылета за стек. Ну или прям во время выделения места сработал stack protector, если опция была включена.
MAKAKA 21.02.2021 18:50 # 0
Иными словами, я могу разбрасывать автоматические переменные по всему блоку, но указатель стека крутанется сразу?
с89 в этом плане честнее, конечно
bormand 21.02.2021 18:52 # 0
Если стек протектор выключен: выделил фрейм, начал сохранять текущий адрес перед вызовом << и упал. Но мог и не упасть, а писнуть в чужую память. Раз на раз не приходится.
bormand 21.02.2021 18:57 # 0
Ну это просто оптимизация такая. Нафиг нужны лишние сложения и вычитания, если достаточно одного в начале и одного в конце.
Ничто не обязывает конпелятор делать именно так. И на других всё может быть по-другому.
hormand 21.02.2021 13:24 # +2
Сегфолт говорит: "Здравтвуй"
Fike 23.02.2021 23:58 # 0
А это где-то определено? Например что вывод на консоль должен фактически завершиться раньше, чем будет вызвана вложенная функция (program order-то при этом не нарушается, главное только порядок вывода сообщений на сосноль). Без оптимизаций - это не в режиме интерпретатора.
MAKAKA 24.02.2021 00:32 # +1
Если ты писнул в буфер, и не влашнул его, а потом упала программа, то гарантий нет
bormand 24.02.2021 15:50 # 0
Крестобляди соснули.
guest6 24.02.2021 16:01 # 0
bormand 24.02.2021 15:52 # 0
Как-будто в интерпретаторах этой проблемы с флашем при смерти проги нет. Тоже запросто могут оборвать вывод на середине.
guest6 24.02.2021 15:56 # 0
bormand 24.02.2021 16:04 # 0
bormand 24.02.2021 16:45 # 0
guest6 24.02.2021 16:59 # 0
А обязан-ли? А если пол байта считал? А если ты пишешь в псевдотерминал? или опхуй?
bormand 24.02.2021 17:06 # 0
Хер знает... Я где-то здесь постил багу про усб-ком адаптер, который проёбывал хвост пакета если его закрыть.
guest6 24.02.2021 16:01 # +2
"The hypervisor did not enable mitigations for CVE-2018-3646, CVE-2019-11091, CVE-2018-12126, CVE-2018-12127, and CVE-2018-12130 for virtual machines because HyperThreading is enabled. To enable mitigations for virtual machines, disable HyperThreading."
а ведь было же сказано еще https://www.theregister.com/2018/06/20/openbsd_disables_intels_hyperthreading/
bormand 25.02.2021 09:48 # +1
Мало было потери пирфоманса от патчей против спектры, осталось добить отключением половины ядер...
3oJIoTou_gui 25.02.2021 11:11 # +1
MAKAKA 25.02.2021 18:52 # +1
ко ко ко снап флетпак
ко ко ко го статическая линковка
и тут у гентушника БОМБАНУЛО!!!!!
https://blogs.gentoo.org/mgorny/2021/02/19/the-modern-packagers-security-nightmare/
guest6 25.02.2021 18:54 # 0
MAKAKA 25.02.2021 18:55 # 0
Fike 25.02.2021 19:50 # 0
guest6 25.02.2021 20:04 # +1
guest6 25.02.2021 19:49 # 0
Desktop 25.02.2021 19:55 # 0
А так хуйня какая-то: не лочьте версии, а то бабайка придёт
MAKAKA 25.02.2021 20:05 # 0
чего хуйня?
Вот например вышла новая версия libFOO, в которой залатали уязвимость
В кклассическом юниксе админ обновил либу, и ссыт спокойно
А с этими вашими локфайлами, докерами, снапами, и прочими "go" он лапу сосет, пока 30 вендоров не обновят либу
Я не говорю, что это всегда лучше. Но есть трейдоф определенный
Desktop 25.02.2021 20:10 # 0
А если там добавили, убрали и поменяли перделок?
MAKAKA 25.02.2021 20:13 # 0
bormand 25.02.2021 20:28 # 0
Проблема в том, что это дорого для разраба либы. Особенно если он хочет регулярно выкатывать новые фичи. И многие из них забивают хуй и поддерживают только последнюю версию. И вот тут-то у юзера и начинаются проблемы -- он не может получить фикс без новых фич. Такой версии либы тупо не существует. И никакие локи-хуёки его не спасут.
Desktop 25.02.2021 20:36 # 0
MAKAKA 25.02.2021 20:38 # +1
сраные модули к сраному вордпрессу с скулинъекциями могут тоже как либы в линуксе распостраняться
bormand 25.02.2021 20:41 # 0
Если в либу пролезло какое-нибудь переполнение буфера (на сишке) или sql/eval инъекция (на скриптушне), то совершенно похуй чем она занималась.
Плюс очень много либ работает с недоверенными данными -- картинки, видео, архивы, книжки, сетевые протоколы...
MAKAKA 25.02.2021 20:48 # 0
Согласен с оратором, или категорически нет?
bormand 25.02.2021 21:05 # 0
MAKAKA 25.02.2021 21:06 # 0
за статическую компиляцию и пин депенденсов (лок) а так же за снапы и флетпаки надо давать в ибало, ибо это не секурно
bormand 25.02.2021 21:15 # 0
Я как раз таки за такую модель, когда приложуха по-минимуму зависит от системы. В идеале только от ядра или каких-то очень стабильных либ, как в винде.
Если мейнтейнер снапа/контейнера/статикпроги не умеет в секьюрити, ну, возможно, не стоит его софт юзать?
MAKAKA 25.02.2021 21:25 # 0
но в целом кульутура шареных либ там меньше, бо нет репозитория
А у меня нет строгого мнения, я вижу плюсы и в одном, и в другом подходе. Но в целом, большинство программистов похоже согласно с тобой, а не с автором
Desktop 25.02.2021 22:08 # 0
MAKAKA 25.02.2021 22:09 # 0
разрабу вообще приятнее вручную выбрать нужные версии, протестировать всё 20 раз, и ровно их и отдать пользователю
а админу наоборот хочется обновить openssl не трогая разраба
bormand 25.02.2021 23:06 # 0
Проблема тут в том, что они не хотят и не могут патчить 100500 разных версий библиотеки, которая юзается в этих снапах. Именно поэтому у них так горит от локов на версию. Именно поэтому они хотят иметь всего 1-2 на всю систему.
В случае с openssl это довольно легко т.к. её разрабы понимают что такое поддержка. В случае со скриптопарашей это нереально.
bormand 25.02.2021 23:21 # 0
Да и с крестами в общем-то. Попробуй тот же буст обновить без пересборки всего софта, который его юзает. Не уверен, что это прокатит.
MAKAKA 26.02.2021 01:16 # 0
проблему с разными версиями я понял, тут конечно сосат6
Desktop 25.02.2021 22:05 # 0
Fike 25.02.2021 23:19 # 0
guest6 25.02.2021 20:56 # 0
а знаешь такую либу -- "glibc"?
https://wiki.postgresql.org/wiki/Locale_data_changes
https://lists.ubuntu.com/archives/ubuntu-devel-discuss/attachments/20210225/e25fc245/attachment.html
bormand 25.02.2021 21:01 # 0
Но блин, что для glibc факап, то для скриптуха на руби или питоне -- образ жизни.
Fike 25.02.2021 21:36 # 0
Fike 25.02.2021 21:38 # 0
ну естественно, проблема здесь в локалях
bormand 25.02.2021 20:52 # 0
Да это пофиг, перелочить все зависимости на пофиксанную версию да пересобрать контейнер/снап -- не такая уж проблема.
Корень зла в том, что такой версии нет. Её физически нет. А свежую пофиксанную воткнуть вместо неё нельзя потому что всё пидорасит. Вот она плата за быструю доставку изменений.
guest6 25.02.2021 20:55 # 0
>версии нет
это еще бОльший пиздец
bormand 25.02.2021 21:04 # 0
Угу. Но это именно то, что пропагандируют адепты локов: мы не осилили обратную совместимость, поэтому у нас есть одна поддерживаемая версия -- последняя.
MAKAKA 25.02.2021 21:26 # 0
guest6 25.02.2021 21:37 # 0