crypt of decay - ещё о сишечке [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

ещё о сишечке [Aug. 18th, 2017|04:35 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
а вы знаете, что
uint8_t b;
...
printf("%u\n", b<<24);

это потенциальное UB, в зависимости от значения b?

ынжой ё страндартизатион камити, йо!


p.s.: анонимус напомнил, что я склеротик: прошлый псто. спасибо.
Linkmeow!

Comments:
[User Picture]
From:[info]perfect_kiss
Date:August 18th, 2017 - 02:45 pm
(Link)
А как работает это УБ ?
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 02:50 pm
(Link)
никак. это UB.
[User Picture]
From:[info]perfect_kiss
Date:August 18th, 2017 - 02:51 pm
(Link)
Я думал что ты дашь линки на статьи с объяснением экслоита, придётся самому гуглить ...
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 02:51 pm
(Link)
поясню, чо происходит.

левый шифт для отрицательных целых не определён. вдвигивание знака в отрицательное целое не определено. поэтому для любых b >= 128 это будет UB, результат не определён.
From:(Anonymous)
Date:August 19th, 2017 - 07:20 am
(Link)
Не понял. 128 типа unsigned char промотится в 128 типа int, не в -128. При чем здесь отрицательные целые?
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 09:51 am
(Link)
сдвиг считай. куда попадёт старший бит 128 после сдвига.
From:(Anonymous)
Date:August 19th, 2017 - 11:27 am
(Link)
А, ну да.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 02:52 pm
(Link)
то есть, по правилам C бэ сначала промотится до int, и становится знаковым. а дальше срака.
From:(Anonymous)
Date:August 18th, 2017 - 04:46 pm
(Link)
> по правилам C бэ сначала промотится до int, и становится знаковым. а дальше срака

6.3.1.1

If an int can represent all values of the original type the value is converted to an int; otherwise, it is converted to an unsigned int. These are called the integer promotions.

Где я неправ?

/ЧД/
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 05:11 pm
(Link)
очевидно, что int может represent all values of unsigned byte.
From:(Anonymous)
Date:August 18th, 2017 - 09:41 pm
(Link)
а, вот это неплохо. спать хотел, не срастил. %-)
/ЧД/
From:(Anonymous)
Date:August 18th, 2017 - 03:15 pm
(Link)
ССЗБ ящетаю
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 03:23 pm
(Link)
однозначно. любой, кто пишет на сишечке — ССЗБ.
[User Picture]
From:[info]perfect_kiss
Date:August 18th, 2017 - 04:10 pm
(Link)
Я на сишечке не пишу, но случалось подрубать в мои любимые скриптоязыки разные си/си плюс плюс библиотеки, и вот удивлялся всегда, почему любой более-менее крупный проектделает свои классы/рутины для работы со строками, особенно утфными. Теперь начинаю понимать.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 04:38 pm
(Link)
потому что всегда проще сделать своё, нежели тащить в проект чужую зависимость жы.
[User Picture]
From:[info]perfect_kiss
Date:August 18th, 2017 - 04:40 pm
(Link)
Да не, вот яркий пример -- https://github.com/28msec/zorba -- пацаны юзают STL строки во всех внешних интерфейсах, но внутри у них свои строки.
Кстати очень клёвый проект.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 05:13 pm
(Link)
потому что стл не всегда самый эффективный для проекта, например. как одна из причин.
From:(Anonymous)
Date:August 18th, 2017 - 10:10 pm
(Link)
Отдавать/принимать наружу что-нибудь кроме нуль-терминированного утф-8 это хуже, чем жрать собачье говно.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 10:12 pm
(Link)
>нуль-терминированного
ебанул говна в прямом эфире.
From:(Anonymous)
Date:August 19th, 2017 - 10:29 am
(Link)
Любитель struct { int length; char* string; }? Возьми уже нормальный язык с встроенными строками и не выебывайся.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 10:32 am
(Link)
нахуй — это воооон туда. там тебе дадут твой нормальный js.
From:[info]silly_sad
Date:August 19th, 2017 - 03:49 pm
(Link)
da i UTF-8 tozhe...
ja dazhe ne znaju chto xuzhe, zero-terminated ili UTF-8...
etot chuvak navernul dva gavna odnovremenno. eto genij publichnogo pojedanija gavna.

zabyl toljko BOM dobavitj.
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 03:47 pm
(Link)
>2017
>использовать bitshits

Не, ну хочется людям стрелять себе в ногу, пусть стреляют.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 03:49 pm
(Link)
а что, сейчас модно что-то другое для того, чтобы биты двигать? умножение не работает, оно тоже UB.
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 04:08 pm
(Link)
Главное -- зачем двигать биты, за исключением некоторых очень специальных случаев?

Если человек не совсем дебил, он аккуратен с умножением на таких крошечных типах, и в проблемы не попадёт.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 04:35 pm
(Link)
ага-ага, не попадёт. ага. могу поспорить, что можно взять любой проект на сишечке (не приветмир, проект), и с ходу найти там кучу UB. как бы ни старались авторы писать аккуратно.

потому что писать на си, не попадая в UB, невозможно.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 04:36 pm
(Link)
p.s.: могу, но не буду, потому что времени жаль.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 04:37 pm
(Link)
p.p.s.: этот баг (этого класса), например, был (есть?) в libsodium. ты не считаешь, надеюсь, что libsodium делают совсем дебилы?
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 05:39 pm
(Link)
Эээ, именно с умножением на малых типах?
Можешь показать?
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 06:05 pm
(Link)
сдвигом.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 03:49 pm
(Link)
p.s.: криптография, например. ага.
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 04:11 pm
(Link)
Ну да.
И часто программисты пишут свои реализации криптоалгоритмов, а не используют готовые библиотеки?

И я не уеврен, что криптография требует сдвигов больших размера контейнера.
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 04:34 pm
(Link)
>И часто программисты пишут свои реализации криптоалгоритмов, а не используют
>готовые библиотеки?

к сожалению, редко. поэтому, например, баг в Argon2 джва года незамеченым лежал. потому что никто не делал реализацию с нуля.
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 05:40 pm
(Link)
И насколько серьёзный этот баг был? Почему его на тестах не выловили?
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 06:08 pm
(Link)
bug.

а тесты… я тебе сейчас страшное скажу. очень страшное. ужасно страшное. ты готов? сиди крепко, держись за стул.

тесты не могут выловить все баги.

надеюсь, ты сможешь с этим дальше жить.
[User Picture]
From:[info]steinkrauz
Date:August 18th, 2017 - 07:32 pm
(Link)
>It doesn't seem that bad because it only reduces the size of the reference area by about 7/8 on average

В общем, ничего принципиально страшного.

Я, собственно, почему и спросил за тесты (то, что они не ловят _все_ баги и так очевидно): если бы это ослабляло алгоритм, было бы грех не воспользоваться очевидной уязвимостью.
From:(Anonymous)
Date:August 18th, 2017 - 10:31 pm
(Link)
Как ты относишься к бесстейтовым гуям на опенгле?
[User Picture]
From:[info]ketmar
Date:August 18th, 2017 - 10:34 pm
(Link)
так же, как и к другим инструментам: хорошая вещь для одних ситуаций, плохая для других.
From:(Anonymous)
Date:August 19th, 2017 - 02:30 am
(Link)
Особо извращенная разновидность байтоебов -- это битоебы.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 02:32 am
(Link)
ты ошибся блогом. пиздуй дальше свой js кодить.
From:(Anonymous)
Date:August 19th, 2017 - 10:26 am
(Link)
js

Будто что-то плохое - единственный язык с правильным ООП.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 10:38 am
(Link)
да ты, я смотрю, знатный копрофил.
From:(Anonymous)
Date:August 19th, 2017 - 01:21 pm
(Link)
JS - концептуальный идеал ЯВУ. Динамические объекты + функции первого класса. ВСЁ. Больше нихуя не нужно.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 01:23 pm
(Link)
я и говорю: говноед-недоучка.
From:(Anonymous)
Date:August 19th, 2017 - 01:30 pm
(Link)
А ты можешь в своей говнодишечке взять и приаттачить к произвольному объекту какую-нибудь метаинфу, ну там, например, историю для графика, который состояние этого объекта рисует - и которому похуй "класс", лишь бы поле значения правильно называлось?
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 01:32 pm
(Link)
во-первых, могу. а во-вторых, ты не поэтому недоучка и говноед. хинт: Алан Кей.
From:(Anonymous)
Date:August 19th, 2017 - 01:35 pm
(Link)
Это намек на лисп или ещё какой-нибудь мертвый диалект коренных народов севера?
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 01:38 pm
(Link)
я и говорю — говноед-недоучка.
From:(Anonymous)
Date:August 19th, 2017 - 01:37 pm
(Link)
во-первых, могу

Ага. Но сначала, наверное, нужно написать т.н. "интерфейс" или т.н. "абстрактный класс". Или заняться РЕФЛЕКСИЕЙ.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 01:38 pm
(Link)
нет.
From:(Anonymous)
Date:August 21st, 2017 - 05:39 am
(Link)
Этот анон сказал "я считаю, что X - Y", и тебя не оскорблял, хули ты выкобениваешься, пидарасина?
[User Picture]
From:[info]ketmar
Date:August 21st, 2017 - 05:41 am
(Link)
о, ещё один говноед-недоучка прибежал кукарекать. цеховая солидарность говнопетушков, лол.
From:[info]silly_sad
Date:August 19th, 2017 - 03:51 pm
(Link)
"4" + 4
From:(Anonymous)
Date:August 19th, 2017 - 04:17 pm
(Link)
"44"
From:[info]silly_sad
Date:August 19th, 2017 - 04:47 pm
(Link)
ponemaju, jestj ljudi kotoryje dejstviteljno ljubjat gavno.
From:(Anonymous)
Date:August 19th, 2017 - 04:59 pm
(Link)
а теперь то же самое в сишке, ХАХАХА
я, кстати, думал, что будет предупреждение
хуй там, скушало и не подавилось
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 05:24 pm
(Link)
сегодня в доме денегератов день открытых дверей, что ли?
From:(Anonymous)
Date:August 19th, 2017 - 06:42 pm
(Link)
А что - у конпелятора недостаточно данных, чтобы понять, что вот это: ("4" + 4) - абсолютно гарантированная хуйня?
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 06:48 pm
(Link)
пиздец наборчик: дегенерат, говноед, недоучка. свет, выключите свет, они на свет лезут!
From:[info]silly_sad
Date:August 20th, 2017 - 01:44 am
(Link)
> пиздец наборчик: дегенерат, говноед, недоучка.

i pri etom bezrabotnyj!!! chto sovsem udiviteljno pri takom naborchike.

(jesli by on realjno rabotal, on bty znal pro 4+4)
From:[info]silly_sad
Date:August 20th, 2017 - 01:42 am
(Link)
> я, кстати, думал, что будет предупреждение
> хуй там, скушало и не подавилось

tojestj etot degenerat NE ZNAL chto on kushajet gavno.
AKOGDA UZNAL, OBRADOVALSJA!!!! "ty smotri! da eto zhe gavno!!! NJAAAAM
From:(Anonymous)
Date:August 20th, 2017 - 04:40 pm
(Link)
Ебанько, ты хоть понял, что речь о C? Я ждал предупреждения от c-конпелятора, а не чего-нибудь ещё.

И вообще, что "4+4"? Приборы? Ты хотел состроумничать насчет плюсования разных типов, да? И тебя не устраивает, что получается в результате сложения строки и числа в JS? Я это понял так - но что в самом деле происходит в твоей тухлой башке, из 4 символов понять невозможно. Вынь хуй изо рта, купи себе клавиатуру с руссими буковками и научись выражаться внятно - телепатов нет.
[User Picture]
From:[info]ketmar
Date:August 21st, 2017 - 04:52 am
(Link)
эк говноеда bombanoolo. любо-дорого смотреть.
From:[info]silly_sad
Date:August 22nd, 2017 - 10:08 am
(Link)
teperj ja ponjal pochemu ketmar ne banit gavnonov!!!!!
[User Picture]
From:[info]ketmar
Date:August 22nd, 2017 - 10:13 am
(Link)
потому что среди них большитсво нормальные. меньшинство — дебилы, и их никто не видит, только я и робот. а средней дебильности — иногда видят. этого вот я тебе оставил поиграться. не хочешь играться — так и скажи.
From:[info]silly_sad
Date:August 22nd, 2017 - 10:18 am
(Link)
igratj ne xochu, a pochetal s udovoljstvijem, prjamo feericheskij jebanavt, fejericheski ferjericheskij!
[User Picture]
From:[info]ketmar
Date:August 22nd, 2017 - 10:27 am
(Link)
и это тоже причина, да. когда сотрудники блядского цирка выступают по собственному почину, бесплатно — то пусть себе, конечно.
From:(Anonymous)
Date:August 20th, 2017 - 05:41 pm
(Link)
а смысл этого заявления? точно то же самое можно адресовать топикстартеру, непосредственно на предмет топика.
From:(Anonymous)
Date:August 19th, 2017 - 02:39 am
(Link)
«— Доктор, мне больно, когда я делаю так.
— Не делайте так.»

Ну не так уж и много в сишечке способов выстрелить себе в ногу, но уж шифтить переменные, невзирая на битность — гарантированный.
[User Picture]
From:[info]ketmar
Date:August 19th, 2017 - 02:41 am
(Link)
>Ну не так уж и много в сишечке способов выстрелить себе в ногу
лол.
From:(Anonymous)
Date:August 21st, 2017 - 06:50 am
(Link)
Ты ж писал об этом уже.
http://lj.rossia.org/users/ketmar/1277012.html
[User Picture]
From:[info]ketmar
Date:August 21st, 2017 - 07:04 am
(Link)
спасибо. проклятый склероз, однако.
From:(Anonymous)
Date:August 21st, 2017 - 07:21 am
(Link)
оба поста даже начинаются с "а вы знаете, что", бгг.

этот анон был ЧД, ага. и сейчас ЧД. у тебя охуенный бложек, чо. разве что ремарка: страны россия/украина/белоруссия - хорошие, а вот государства в этих странах - пиздец какой-то. но это ты и без меня знаешь, думаю.

а вообще спасибо, убил третий день, пока голова не работает. дома мама-истерик и бабушка-фанатик. охуенная рабочая атмосфера, хуле.

это ж надо было так всё проебать. хотя я куда не гляну, это про любой $subj вокруг меня сказать можно. даже про разжиревшую кошку.

эх.
[User Picture]
From:[info]ketmar
Date:August 21st, 2017 - 08:11 am
(Link)
>страны россия/украина/белоруссия - хорошие, а вот государства в этих странах -
>пиздец какой-то

натюрлих. и люди хорошие ан масс, только испорчены квартирным вопросом. я, как ты знаешь, космополит. ну, то есть, ненавижу все государства и национальности примерно одинаково.