The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

30.10.2013 11:45  Оптимизация кода компилятором может привести к появлению проблем безопасности в приложениях

Группа исследователей из Массачусетского технологического университета (MIT) опубликовала (PDF, 240 Кб) результаты изучения особенностей работы систем оптимизации кода современных компиляторов, способных привести к понижению безопасности приложений. В итоге, выявлены многочисленные факты, когда в процессе компиляции в машинный код из приложения исключаются некорректно написанные блоки, бессмысленные с точки зрения оптимизатора, но влияющие на безопасность.

Например, компилятор исключает неопределённые или нестабильные участки кода, которые на деле могут выступать проверками на появление нулевого указателя или выхода за границы области памяти (например, оптимизатор может заменить "data + x < data" на "x < 0" или считает всегда истинным "-k >= 0" если ранее была проверка "if (k < 0)"). В итоге, данные проверки не включаются в исполняемый файл, и безопасное на уровне исходных текстов приложение становится подвержено уязвимостям на уровне исполняемого кода. Проблеме подвержено большинство современных компиляторов, включая GCC, Clang, ICC, MSVC, open64, pathcc, suncc и т.д.

Например, оптимизатор GCC удалит вторую проверку из следующего кода:


   char *buf = ...;
   char *buf_end = ...;
   unsigned int len = ...;
   if (buf + len >= buf_end) 
      return;  /* len too large */
   if (buf + len < buf) 
      return; /* overflow, buf+len wrapped around write to buf[0..len-1] */

Программист использует условие "buf + len < buf" для проверки на переполнение указателя, подразумевая, что при очень большом значении будет осуществлено переполнение размерности типа. GCC оперирует тем, что по стандарту языка C указатель не должен выходить за пределы объекта более чем на единицу, а в противном случае поведение программы не определено.

В качестве другого примера можно привести код для которого будет удалена проверка на нулевой указатель (gcc считает, что tun не может принимать значение NULL после того, как был произведен доступ к tun->sk):


   struct tun_struct *tun = ...;
   struct sock *sk = tun->sk;
   if (!tun)
      return POLLERR; /* write to address based on tun */

Для выявления проблемных мест в коде на языках C и C++, которые могут быть удалены на стадии оптимизации, исследователями подготовлен специальный статический анализатор STACK. Изучение при помощи STACK типовых открытых проектов выявило 160 подобных проблем, из которых 32 присутствуют в ядре Linux, 3 в Mozilla, 9 в PostgreSQL, 4 в QEMU, 21 в FFmpeg, 3 в Xen, 5 в Python.

Более широкая проверка исходных текстов показала, что нестабильные блоки кода присутствуют в 3471 пакете из 8575 пакетов, доступных в репозиториях Debian. Наибольшее число выявленных проблем (59230 проблем в 2800 пакетах) связано с разыменованием нулевого указателя, 5795 проблем могут привести к переполнению буфера, 4364 к проблемам целочисленной арифметики, 3680 - проблемам с переполнением указателя. Таким образом, описанные в работе проблемы не являются единичными, а широко распространены и могут быть использованы злоумышленниками для организации атак.

  1. Главная ссылка к новости (http://www.itworld.com/securit...)
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: gcc, compile, security
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Герберт Уэллс, 12:07, 30/10/2013 [ответить] [смотреть все]
  • +1 +/
    До проверки на нуль выполнение не дойдёт.
     
     
  • 2.5, Дмитрий, 12:23, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]
  • +3 +/
    Если почитать оригинал http lwn net Articles 342330 There is one little pro... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.53, Герберт Уэллс, 14:18, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Если бы мапирование в первые страницы действительно где-либо использовалось, то ... весь текст скрыт [показать]
     
     
  • 4.299, PereresusNeVlezaetBuggy, 17:04, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ещё не так давно пока не началась эпопея с уязвимостями, эксплуатирующими именн... весь текст скрыт [показать]
     
  • 3.65, dq0s4y71, 14:46, 30/10/2013 [^] [ответить] [смотреть все]  
  • +10 +/
    Ну, написали бы тогда:

    volatile struct tun_struct * tun = ...
    volatile struct sock * sk = tun->sk;

    Компилятор вовсе не обязан знать, что при каких-то экзотических условиях кривой код всё-таки работает. Но компилятору можно об этом сообщить :)

     
     
  • 4.217, pavlinux, 14:52, 31/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    volatile const struct tun_struct const __restrict const __attribute__ const ,... весь текст скрыт [показать]
     
     
  • 5.218, arisu, 14:57, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    это будет покруче 171 Фауста 187 Гёте 8230 ... весь текст скрыт [показать]
     
  • 1.2, Аноним, 12:13, 30/10/2013 [ответить] [смотреть все]  
  • +3 +/
    если нет ошибки в программе, значит ошибка в компиляторе..
     
     
  • 2.240, Аноним, 16:13, 31/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Ошибка в стандарте языка ... весь текст скрыт [показать] [показать ветку]
     
  • 1.6, BayaN, 12:29, 30/10/2013 [ответить] [смотреть все]  
  • +2 +/
    Приведены два примера неистового говнокода, в проблемах безопасности конечно виноват оптимизатор компилятора.
     
     
  • 2.59, анонимотик, 14:39, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Комментор умнее исследователей и редакторов научных статей. Гений прям.
     
     
  • 3.70, noname01, 14:51, 30/10/2013 [^] [ответить] [смотреть все]  
  • +4 +/
    Нет, все ещё круче Если учитывать 3471 пакете из 8575 пакетов, доступных в реп... весь текст скрыт [показать]
     
  • 3.75, Аноним, 14:58, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Чтобы подобным образом наезжать на комментатора, неплохо бы исследованиями заним... весь текст скрыт [показать]
     
     
  • 4.103, Аноним, 16:51, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Если комментатор пишет явную херню, проводить специальные исследования по данном... весь текст скрыт [показать]
     
     
  • 5.181, Аноним, 23:13, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Но можно по ссылке сходить и прочитать хотя бы первые буквы работы, которую аме... весь текст скрыт [показать]
     
     
  • 6.233, Аноним, 15:56, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Оптимизация UB втихую - это, конечно, мудро и правильно Вместо того, чтобы выда... весь текст скрыт [показать]
     
     
  • 7.243, arisu, 16:26, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    в данном случае не было никакой 171 оптимизации UB 187 включение оптимизато... весь текст скрыт [показать]
     
  • 7.246, Аноним, 16:29, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Предназначение компилятора - компилировать, т е преобразовать исходный текст пр... весь текст скрыт [показать]
     
     
  • 8.264, Аноним, 18:44, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    А речь и не идет о философских размышлениях Достаточно лишь довести до сведения... весь текст скрыт [показать]
     
  • 3.85, BayaN, 15:38, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Нет, просто комментатор на стороне создателей компиляторов, а не говнокодеров П... весь текст скрыт [показать]
     
  • 3.192, arisu, 08:25, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    в данном случае 8212 умнее авторы компилятора которые стандарты таки читали,... весь текст скрыт [показать]
     
     
  • 4.234, Аноним, 15:57, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Стандарт прочитать и обезьянка может А вот корректно обрабатывать отклонения от... весь текст скрыт [показать]
     
     
  • 5.248, arisu, 16:35, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    предлагаю тебе надрать им всем задницы и показать, как надо делать компиляторы ... весь текст скрыт [показать]
     
     
  • 6.258, Аноним, 17:00, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ага, для того чтобы это хорошо работало, правда, придется тезисы Тюринга опровер... весь текст скрыт [показать]
     
     
  • 7.260, arisu, 17:52, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    не веришь ты в людей это, может, гений среди нас, а ты его расхолаживаешь он т... весь текст скрыт [показать]
     
  • 7.268, Аноним, 18:51, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Вас послушать, так для оптимизаций компилятор вообще должен собственным сознание... весь текст скрыт [показать]
     
     
  • 8.270, arisu, 19:00, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    так когда релиза-то ждать 171 нетупого компилятора 187 ... весь текст скрыт [показать]
     
     
  • 9.301, Аноним, 18:55, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Я решил эту проблему более эффективным способом ... весь текст скрыт [показать]
     
     
  • 10.308, arisu, 19:15, 01/11/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    ага балабольским побалаболил и сбежал ... весь текст скрыт [показать]
     
  • 2.102, Аноним, 16:49, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    На сях гoвнокод, как правило, является наиболее простым и эффективным решением п... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.193, arisu, 08:27, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    это просто потому, что у тебя мозг кроме говнокода ничего больше произвести не в... весь текст скрыт [показать]
     
     
  • 4.232, Аноним, 15:54, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Не только у меня Сколько сишных программ не смотрел - никогда не видел, чтобы б... весь текст скрыт [показать]
     
     
  • 5.239, Аноним, 16:13, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Поэтому сам я стараюсь на сях не писать Благо, задачи не системные, и перл отли... весь текст скрыт [показать]
     
     
  • 6.257, Аноним, 16:58, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Жаль что на перле операционки не пишут, правда ... весь текст скрыт [показать]
     
     
  • 7.265, Аноним, 18:46, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Когда-нибудь найдется один ценитель истинного юниксвея, а не фанат блобов, и вот... весь текст скрыт [показать]
     
     
  • 8.312, Аноним, 00:16, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Тогда ты поймешь насколько удобно в perl делать вещи типа записать бит 5 в ед... весь текст скрыт [показать]
     
  • 7.302, Аноним, 18:56, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ага Тока на Lua ... весь текст скрыт [показать]
     
  • 5.249, arisu, 16:37, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    бедняга плохо быть тобой ... весь текст скрыт [показать]
     
     
  • 6.269, Аноним, 18:54, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Не только мной ... весь текст скрыт [показать]
     
     
  • 7.313, Аноним, 00:42, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    > Не только мной.

    FYI, баги встречаются не только в программах на си :).

     
  • 5.256, Аноним, 16:58, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Я прямо удивляюсь даже - какой же операционкой вы тогда пользуетесь И если они ... весь текст скрыт [показать]
     
     
  • 6.266, Аноним, 18:47, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    А я не перфекционист ... весь текст скрыт [показать]
     
     
  • 7.314, Аноним, 00:44, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Более того, сажать баги можно на любом ЯП Некоторые из них будут вести к пробле... весь текст скрыт [показать]
     
  • 2.109, Аноним, 17:07, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Константин Серебряный, залогиньтесь
     
     
  • 3.304, Аноним, 18:59, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    > Константин Серебряный, залогиньтесь

    А кто это? Герой повести А.Толстого?

     
  • 1.7, Аноним, 12:31, 30/10/2013 [ответить] [смотреть все]  
  • –1 +/
    Компиляторы стали слишком умными, началась игра кто кого...
     
     
  • 2.190, Led, 04:11, 31/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Относительно Потому как кодеры в среднем стали на порядок тупее ... весь текст скрыт [показать] [показать ветку]
     
  • 2.194, arisu, 08:27, 31/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    нет, это говнокодеры продолжают считать, что учить ПДД перед тем, как сесть за р... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.236, Аноним, 16:07, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Тупое следование ПДД чревато Если бы пользующиеся преимуществом водители при п... весь текст скрыт [показать]
     
     
  • 4.250, arisu, 16:38, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    так же, как и тупые автомобильные аналогии каюсь, сам первый начал ... весь текст скрыт [показать]
     
     
  • 5.267, Аноним, 18:49, 31/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Профессиональный сишник может наступить на грабли даже на ровном месте Сначал... весь текст скрыт [показать]
     
     
  • 6.315, Аноним, 00:46, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    А иные будут грести листья лопатой, как дeбилы Потому что грабли видите ли вооб... весь текст скрыт [показать]
     
     ....нить скрыта, показать (6)

  • 1.8, BSA, 12:36, 30/10/2013 [ответить] [смотреть все]  
  • +5 +/
    А причем тут компиляторы? Вместо того, чтобы проверить len, проверяется выход указателя за пределы выделенной области. Если в стандарте языка указано, что результат операции переполнения не определен, то нет ничего криминального в том, что компиляторы этим пользуются. Другое дело, что могли бы выдавать предупреждение в этом случае.
    Это косяки программистов.
     
     
  • 2.10, z, 12:58, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    А если этот len добавляется к buf в каждой итерации Умник такой умник... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.32, ананим, 13:41, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Покажите такой код, где нужно в цикле к указателю постоянно добавлять число и я ... весь текст скрыт [показать]
     
     
  • 4.87, клоун Стаканчик, 15:43, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    копирование первого поля структуры struct data dd data1 dd data2 ends mo... весь текст скрыт [показать]
     
     
  • 5.92, ананим, 16:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Хинт Сабж и данный трэд о С в крайнем случае о С ПС понятно что в ассе... весь текст скрыт [показать]
     
     
  • 6.97, клоун Стаканчик, 16:18, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    Пример 1 ACPI таблица RSDT состоит из последовательно идущих структур разно... весь текст скрыт [показать]
     
     
  • 7.104, ананим, 16:52, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    1 Ещё раз для упoрoтых , Об аспи речи не шло аспи кривое по-жизни даже созда... весь текст скрыт [показать]
     
     
  • 8.114, z, 17:21, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Для употорых аспи лишь один из примеров, взять любые данные, упакованные в стру... весь текст скрыт [показать]
     
     
  • 9.119, ананим, 17:31, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Для дабл-употорых Так где в коде проверки Почему их нет Зыж То что их нет озн... весь текст скрыт [показать]
     
     
  • 10.195, arisu, 08:30, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    потому что про проверки никто не спрашивал просили пример кода, где 171 в цик... весь текст скрыт [показать]
     
     
  • 11.211, ананим, 12:53, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    серьёзно вот ветка При чём последнее 8212 это моё И я уж точно знаю что пр... весь текст скрыт [показать]
     
  • 11.255, Аноним, 16:56, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    А также например декомпрессоры LZ не гнушаются таких вещей ради эффективности и ... весь текст скрыт [показать]
     
  • 9.130, ананим, 18:10, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    1 В каком месте компилятор меняет исходники 2 Когда вы предоставили с-код, тр... весь текст скрыт [показать]
     
     
  • 10.131, ананим, 18:20, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    ззыж Вот и покажи где тут бегают по указателям, потенциально выходящим за предел... весь текст скрыт [показать]
     
  • 10.136, клоун Стаканчик, 18:31, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    1 компилятор исключил условие 2 на что вы требуете проверять Не выделил ли ... весь текст скрыт [показать]
     
     
  • 11.139, ананим, 18:51, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    На оверфлоу указателя По поводу чего и был трэд пока вы не пришли с темой к у... весь текст скрыт [показать]
     
     
  • 12.142, клоун Стаканчик, 19:06, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    32-разрядное адресное пространство ограничено 2 32 степени адресов При этом дан... весь текст скрыт [показать]
     
     
  • 13.153, Аноним, 20:15, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Программа в юзерспейсе в общем случае понятия не имеет о том какая там память Э... весь текст скрыт [показать]
     
     
  • 14.171, клоун Стаканчик, 22:14, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    Программам в юзерспейсе нет необходимости проверять на выход за пределы адресн... весь текст скрыт [показать]
     
     
  • 15.183, Аноним, 23:43, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Кажется, Линус тоже плавает - он почему-то не совсем согласен насчет элегантно... весь текст скрыт [показать]
     
     
  • 16.187, клоун Стаканчик, 02:54, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Тогда предложите свой гениальный способ страничной адресации 256 Тб памяти 64 б... весь текст скрыт [показать]
     
     
  • 17.189, Аноним, 03:47, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    256 Тб памяти 64 бита - это как раз не про режим PAE, а про гениальный спос... весь текст скрыт [показать]
     
     
  • 18.210, клоун Стаканчик, 10:14, 31/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Прежде чем продолжать, узнайте что такое PAE, long mode и AMD64.
     
  • 17.212, Michael Shigorin, 12:55, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Зачем Про накладные расходы на страницах минимального размера не думали и про ... весь текст скрыт [показать]
     
  • 15.185, Michael Shigorin, 00:37, 31/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Занавес Наверное, это такие люди просовывают через PCI данные побитно, дёргая н... весь текст скрыт [показать]
     
  • 15.226, Аноним, 15:43, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Как-то так переполнения буферов и случаются Что, ты совсем не в состоянии осозн... весь текст скрыт [показать]
     
  • 13.197, arisu, 08:32, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    8230 ты риальне клоун ... весь текст скрыт [показать]
     
  • 11.196, arisu, 08:31, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    вообще-то, разыменование NULL 8212 это ошибка по стандарту языка , угу ... весь текст скрыт [показать]
     
     
  • 12.227, Аноним, 15:44, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Разыменование - да А сам по себе доступ - не обязательно ... весь текст скрыт [показать]
     
     
  • 13.251, arisu, 16:39, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    расскажи мне, о Гуру, как можно делать 171 доступ 187 без разыменования ... весь текст скрыт [показать]
     
     
  • 14.317, Аноним, 09:09, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Упс, перепутал с обращением к освобожденной памяти Нефиг сообщения сонным писат... весь текст скрыт [показать]
     
     
  • 15.324, arisu, 10:58, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    я же не спорю, что на уровне аппаратуры может быть валидной.
     
  • 9.184, Аноним, 00:11, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Кого именно умнее, тебя клоун Так это дело нехитрое Тебе уже жирно намекали на... весь текст скрыт [показать]
     
  • 4.164, Филипп Филиппович, 21:07, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну-ну, расскажите миру, в каком месте это верно про цикл, итерирующий массив стр... весь текст скрыт [показать]
     
  • 2.12, Аноним, 13:00, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Это косяки ЯЗЫКА Стандарт С позволяет не только себе ногу отстрелить, но и пока... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.13, Аноним, 13:07, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Аноним такой "знаток", что не в силах отличить недостатки от достоинств?
     
     
  • 4.34, Аноним, 13:44, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Может быть ты в силах? :)
     
  • 4.35, Аноним, 13:44, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    А, так возможность переполнения - это на самом деле достоинство Как и создаваем... весь текст скрыт [показать]
     
     
  • 5.38, Аноним, 13:46, 30/10/2013 [^] [ответить] [смотреть все]  
  • +3 +/
    Для кого дыра, а для кого и мать родна ... весь текст скрыт [показать]
     
     
  • 6.305, Аноним, 19:00, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Намек на АНБ ... весь текст скрыт [показать]
     
  • 5.64, Аноним, 14:46, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    да Это следствие ручного управление памятью Такое же как низкое ее потребление... весь текст скрыт [показать]
     
     
  • 6.221, еще один аноним, 15:11, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    не путай "следствие" с "достоинством". Это разные понятия
     
  • 6.238, Аноним, 16:11, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Возможность целочисленного переполнения - это _не_ следствие ручного управления ... весь текст скрыт [показать]
     
  • 5.154, Аноним, 20:18, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Это всего лишь то как по факту работают процессоры в массе своей Обойти сие мож... весь текст скрыт [показать]
     
     
  • 6.166, chinarulezzz, 21:15, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    пффф modula-2 3 , oberon ... весь текст скрыт [показать]
     
     
  • 7.229, Аноним, 15:46, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Я и смотрю - то-то все низкоуровневые и системные дела на них написаны Ядра, бу... весь текст скрыт [показать]
     
     
  • 8.242, arisu, 16:23, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    не тупи, пожалуйста надо ли в очередной раз пояснять, что популярность не обяза... весь текст скрыт [показать]
     
     
  • 9.300, Аноним, 18:54, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    А не вы ли случайно употребляли выражение гвидобейсик в адрес пистона ... весь текст скрыт [показать]
     
     
  • 10.309, arisu, 19:15, 01/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    и что характерно 8212 вовсе не за синтаксис сюрприз, да ... весь текст скрыт [показать]
     
     
  • 11.318, Аноним, 09:29, 02/11/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    За синтаксис тоже можно он ориентирован на загон дeбила в стойло Пинками Если... весь текст скрыт [показать]
     
     
  • 12.327, arisu, 11:04, 02/11/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    синтаксис отстойный, конечно, я не спорю но гвидобейсик не потому гвидобейсик ... весь текст скрыт [показать]
     
  • 9.319, Аноним, 09:52, 02/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Теоретически это может быть и так Практически - по логике вещей получается что ... весь текст скрыт [показать]
     
     
  • 10.328, arisu, 11:06, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    а чего спорного ты точно описал реальное положение вещей не идиотничай, пожалу... весь текст скрыт [показать]
     
  • 4.199, arisu, 08:37, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    вот конктретно 171 неопределённое поведение при целочисленном переполнении 18... весь текст скрыт [показать]
     
     
  • 5.230, Аноним, 15:48, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Тем более что процы умеют выставлять carry-флаг в массе своей на уровне железа, ... весь текст скрыт [показать]
     
  • 5.235, Аноним, 16:04, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ваши рассуждения очень напоминают поттеринга наше любимое ядро linux поддержив... весь текст скрыт [показать]
     
     
  • 6.253, arisu, 16:48, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    любую идею можно довести до абсурда 8212 и тогда получится полная фигня в да... весь текст скрыт [показать]
     
     
  • 7.307, Аноним, 19:07, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну вот поццеринг примерно так же и рассуждал Кому надо - пусть эмулируют ... весь текст скрыт [показать]
     
     
  • 8.311, Michael Shigorin, 23:44, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Мягко говоря, некорректное сравнение -- поскольку передёрнули правило и исключен... весь текст скрыт [показать]
     
  • 3.14, Аноним, 13:09, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Могу посоветовать тебе и твоим функциональным аналогам писать на Visual Basic ... весь текст скрыт [показать]
     
     
  • 4.36, Аноним, 13:44, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    Советы свои знаешь куда засунь ... весь текст скрыт [показать]
     
     
  • 5.98, Аноним, 16:25, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Да ладно Барсик - это тайная эротическая мечта любого сишника ... весь текст скрыт [показать]
     
     
  • 6.156, Аноним, 20:19, 30/10/2013 [^] [ответить] [смотреть все]  
  • +3 +/
    Вы явно путаете сишников и питонистов Тут один типаж даже название ему придумал... весь текст скрыт [показать]
     
     
  • 7.241, Аноним, 16:14, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Ну так правильно Питонисты имеют то, о чем сишники только мечтают ... весь текст скрыт [показать]
     
     
  • 8.245, arisu, 16:29, 31/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    честно не мечтаем мы о том, чтобы смена количества пробелов в начале строки изм... весь текст скрыт [показать]
     
  • 8.320, Аноним, 09:57, 02/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Тормозилово, с синтаксисом где дeбила пинками заставляют форматировать гoвнокод ... весь текст скрыт [показать]
     
  • 3.26, Филипп Филиппович, 13:37, 30/10/2013 [^] [ответить] [смотреть все]  
  • +8 +/
    > Это косяки ЯЗЫКА.
    > Стандарт С позволяет не только себе ногу отстрелить, но и покалечить окружающих.

    Стандарт определяет язык, который хорошо переносим и одновременно эффективен. Результат переполнения сильно зависит от аппаратной платформы, поэтому язык НЕ МОЖЕТ регламентировать результат переполнения. Если он регламентирует, к каждой операции с арифметикой указателей придётся генерировать код проверки переполнения и приведения результатов к заданному стандартом виду. Это убьёт эффективность. Косяка в этом никакого нет, очень логичная особенность дизайна, если понимать, что язык изначально позиционировался как переносимая альтернатива ассемблеру.

    Другой вопрос, что сейчас уже не очень естественно писать почти всё прикладное ПО на таком языке. Но традиция пока жива. :-)


     
     
  • 4.44, тоже Аноним, 13:57, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    Вообще-то почти все прикладное ПО пишут не на Сях, а скорее на Крестах В кото... весь текст скрыт [показать]
     
     
  • 5.47, Филипп Филиппович, 14:12, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    К сожалению, в крестах наследие Си очень сильно В теории -- да, стандартная биб... весь текст скрыт [показать]
     
     
  • 6.52, тоже Аноним, 14:17, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Это скорее legacy-проблемы За последнее время по всему интернету развешаны стат... весь текст скрыт [показать]
     
     
  • 7.57, Филипп Филиппович, 14:30, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Это-то да Но ведь оно же лет без малого пятнадцать так Некоторые сдвиги есть, ... весь текст скрыт [показать]
     
     
  • 8.58, тоже Аноним, 14:32, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Потому что проблема не столько в легаси-коде, сколько в легаси-учебниках ;)

     
     
  • 9.66, Филипп Филиппович, 14:47, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Ну да, разруха не в клозетах Она в головах -D Но я всё равно в последние неск... весь текст скрыт [показать]
     
     
  • 10.79, ананим, 15:12, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Потому что не уверены в своих силах Я предпочитаю рассчитывать на себя больше, ... весь текст скрыт [показать]
     
     
  • 11.81, Филипп Филиппович, 15:23, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    > Потому что не уверены в своих силах?

    Нет, не поэтому. Не хочу.

     
     
  • 12.86, ананим, 15:40, 30/10/2013 [^] [ответить] [смотреть все]  
  • –5 +/
    Да я и так понял Порассуждать с надутыми щёками мы все горазды Типа, ох уж эти... весь текст скрыт [показать]
     
     
  • 13.105, Филипп Филиппович, 17:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    О, да-да, мнение опеннетовского анонима сейчас перевернёт мою вселенную Впрочем... весь текст скрыт [показать]
     
     
     
    Часть нити удалена модератором

  • 15.129, Филипп Филиппович, 18:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Ну-ну, просветите меня про состав стандартной библиотеки и расскажите, как жить ... весь текст скрыт [показать]
     
  • 10.124, dq0s4y71, 17:45, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Аналогично Для системного встроенного программирования использую Си, а С в эт... весь текст скрыт [показать]
     
     
  • 11.165, тоже Аноним, 21:13, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну, а мне, например, нужно разрабатывать программы, которыми люди потом пользуют... весь текст скрыт [показать]
     
  • 6.200, arisu, 08:40, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    единственный нормальный способ использовать плюсовое недоразумение ... весь текст скрыт [показать]
     
     
  • 7.224, ананим, 15:39, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Бред Нормальное плюсовое использование 8212 это шаблоны Вот это действитель... весь текст скрыт [показать]
     
     
  • 8.228, arisu, 15:44, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    это мощь и красота костылей ещё и на уровне синтаксиса костыльных вообще, наст... весь текст скрыт [показать]
     
     
  • 9.252, ананим, 16:46, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Ха Шаблоны существовали уже тогда, когда маркетолухи ещё и слово то такое, гене... весь текст скрыт [показать]
     
     
  • 10.329, Vkni, 20:47, 02/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Я, честно говоря, тоже в своё время восхищался шаблонами, пока не узнал, что выв... весь текст скрыт [показать]
     
  • 10.330, arisu, 21:17, 02/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    угу-угу правда, в Аде их придумали в районе 1978-го года, а первый cfront ни о ... весь текст скрыт [показать]
     
  • 2.16, Xasd, 13:14, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    верно какого чёрта -- программист такой умный что уже ПОСЛЕ того как СОВЕРШИ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.18, Аноним, 13:23, 30/10/2013 [^] [ответить] [смотреть все]  
  • +4 +/
    По-моему, это еще более страшный быдлoкод ... весь текст скрыт [показать]
     
     
  • 4.21, Xasd, 13:28, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    где ты тут код увидил тут лишь одно выражение, которое проверяет что каждое из ... весь текст скрыт [показать]
     
     
  • 5.29, Аноним, 13:40, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Да-да, скажи ещё что кот по клавиатуре прошёл и оно само напечаталось Ты показа... весь текст скрыт [показать]
     
     
  • 6.31, Аноним, 13:41, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Хамская манера общения тут только у тебя хотя я и использовал слово быдлoкод ... весь текст скрыт [показать]
     
     
  • 7.37, Аноним, 13:45, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Залогинься, Xasd Щас прям, поверю что пришёл компетентный Аноним тебя защищать ... весь текст скрыт [показать]
     
     
  • 8.50, Аноним, 14:15, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Ну ты же знаешь, что комент про быдлoкод писал не ты? :)
     
  • 3.20, Аноним, 13:25, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    За такой код надо тебе по пальцам молотком для мяса пройтись.
     
     
  • 4.23, Xasd, 13:28, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    ну напиши как надо балобол так как ты писать ни чего не будешь -- то разговор ... весь текст скрыт [показать]
     
     
  • 5.25, Аноним, 13:35, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Лол, как тебя зацепило Нет уж - давай ты свои ошибки сам исправишь Подскажу в... весь текст скрыт [показать]
     
     
  • 6.33, Xasd, 13:43, 30/10/2013 [^] [ответить] [смотреть все]  
  • –4 +/
    да -- я привёл код который просто проверяет переполнение при сложении совершенн... весь текст скрыт [показать]
     
     
  • 7.41, Аноним, 13:49, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Оправдываться уже поздно, молодой человек. С вами всё понятно.
     
     
  • 8.45, Xasd, 13:57, 30/10/2013 [^] [ответить] [смотреть все]  
  • –3 +/
    ну слово не воробей если уж я написал свою точку зрения -- назад взять слова не... весь текст скрыт [показать]
     
     
  • 9.177, Аноним, 22:32, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Это совершенно нормально По другому запускать код находящийся в known локации и... весь текст скрыт [показать]
     
  • 6.69, ананим, 14:51, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Именно что ЛОЛ Обозвал человека, докажи что заслуженно А пока только эти эпите... весь текст скрыт [показать]
     
     
  • 7.78, Xasd, 15:10, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    да да, разумеется ULONG_MAX - buf len здесь конечно явно уместнее го... весь текст скрыт [показать]
     
     
  • 8.83, ананим, 15:33, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    cat 222 c include stdio h main size_t l 0 можно с модификат... весь текст скрыт [показать]
     
     
  • 9.91, pavlinux, 16:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    > /* Limit of 'size_t' type.  */

    Так не интересно, это читерство. :-P

     
     
  • 10.95, ананим, 16:07, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Кстати согласен Такие вещи должны определятся на целевой платформе но конста... весь текст скрыт [показать]
     
     
  • 11.173, pavlinux, 22:17, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Какой, stdint h Не, он феншуйный - ISO IEEE ля-ля-ля 1999 ... весь текст скрыт [показать]
     
  • 8.89, pavlinux, 15:57, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    define SIZE_T_MAX 2UL sizeof size_t 8 - 1 - 1 как вариант define... весь текст скрыт [показать]
     
  • 3.30, Аноним, 13:40, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    > слогаемых

    По русскому у тебя то-же что и по информатике?

     
     
  • 4.39, Xasd, 13:47, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    нет, по русскому у меня была почти двойка а почему спрашиваешь может про физку... весь текст скрыт [показать]
     
     
  • 5.46, тоже Аноним, 14:03, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    А информатики еще не было вовсе, мы поняли Бросьте позориться Вы написали безг... весь текст скрыт [показать]
     
     
  • 6.49, Xasd, 14:12, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    была у нас даже были там в классе -- немножко компьютеров но при чём тут ... весь текст скрыт [показать]
     
     
  • 7.55, тоже Аноним, 14:22, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    То, что вы невнимательны, было заметно и до этого комментария Работать с числам... весь текст скрыт [показать]
     
     
  • 8.60, Xasd, 14:40, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    да, конечно а в некоторых случаях -- я даже не вижу смысла работать с числами к... весь текст скрыт [показать]
     
     
  • 9.168, Аноним, 21:33, 30/10/2013 [^] [ответить] [смотреть все]  
  • +4 +/
    Очень жаль что тебе не вкатили двойку в четверди по русскому языку Ты этого н... весь текст скрыт [показать]
     
     
  • 10.331, Xasd, 00:50, 03/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    с чего ты взял что такого не случалось как раз такое бывало - всё равно не... весь текст скрыт [показать]
     
     
  • 11.332, arisu, 01:54, 03/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    причём постоянно, судя по твоим текстам ... весь текст скрыт [показать]
     
  • 11.334, Led, 03:53, 03/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    И ещё будет... весь текст скрыт [показать]
     
  • 7.202, arisu, 08:49, 31/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    зачем трудиться, если ты сам отлично справляешься с задачей 171 опазоривания ... весь текст скрыт [показать]
     
  • 3.77, ..., 15:03, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Подобные проверки перед каждой арифметической операцией негативно повлияют как н... весь текст скрыт [показать]
     
     
  • 4.99, ананим, 16:25, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    А для этого есть венгерская нотация и тд Опять же, имеет смысл для глобальных ... весь текст скрыт [показать]
     
     
  • 5.203, arisu, 08:56, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    за такое применение венгерской нотации надо бить бамбуковой палкой по пяткам, от... весь текст скрыт [показать]
     
     
  • 6.214, ананим, 13:06, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    а не нужно выдумывать левые обозначения для стандартных типов int тоже меняется... весь текст скрыт [показать]
     
  • 3.201, arisu, 08:46, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    прикинь, процессор тоже делает именно так сюрпрайз, да а то, что си заставляет... весь текст скрыт [показать]
     
     
  • 4.321, Аноним, 10:04, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну там проблема в том что на ширину регистров завязано, тогда как целочисленные ... весь текст скрыт [показать]
     
  • 1.9, Аноним, 12:36, 30/10/2013 [ответить] [смотреть все]  
  • +7 +/
    вообще забавно:
    сначала обратиться к структуре по указателю (*sk = tun->sk), а уже затем проверить указатель на NULL
     
     
  • 2.28, Crazy Alex, 13:39, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Да уж, возмущаться таким кодом - умильно С первым примером, конечно, надо ворни... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.56, dq0s4y71, 14:26, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Зачем так сложно Вот то, что имели ввиду авторы, но не осилили реализовать ... весь текст скрыт [показать]
     
     
  • 4.100, Аноним, 16:27, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    > if ((intptr_t)buf + len < buf)

    И что, компилятор это не выкинет?

     
     
  • 5.111, dq0s4y71, 17:12, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Проверьте :)
     
  • 4.106, Crazy Alex, 17:04, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Или так, но это optional тип.
     
     
  • 5.113, dq0s4y71, 17:15, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Что значит optional? Это стандартный тип, начиная с С99.
     
     
  • 6.116, Crazy Alex, 17:29, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    n1124.pdf

    7.18.1.4

    ...These types are optional

     
     
  • 7.125, dq0s4y71, 17:46, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Да, действительно.
     
  • 4.204, arisu, 08:57, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    беда в том, что значение этого выражения всё равно не определено, если случилось... весь текст скрыт [показать]
     
  • 1.22, Филипп Филиппович, 13:28, 30/10/2013 [ответить] [смотреть все]  
  • +9 +/
    Строго говоря, код в примерах не очень корректный. Увы, подобные перлы действительно перестают работать в результате деятельности оптимизатора, но это проблема кода, а не оптимизатора.

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

    Ну и в переводе ошибка. Это не tun->sk не может быть нулевым, это tun не может быть нулевым. Кстати, в этом примере трудно не согласиться с оптимизатором! Если строкой выше идёт доступ к члену структуры, то указатель просто не имеет права быть нулевым. Проверять надо до доступа. Глючный код -- неопределённый результат, в чём удивление? Тот, кто этот код писал, видел за кодом арифметику с указателями  на уровне ассемблерных команд. Это ценное умение. Но одновременно -- отвратительная привычка, если сопровождается тем, что программист рассчитывает на определённую низкоуровневую реализацию. Так он просто не сможет писать переносимый код.

    Рациональное зерно, правда, в том, что кривоватый код, который ранее работал безупречно, может перестать это делать с включением оптимизации или заменой версии компилятора. Но ведь это ожидаемо и очевидно, нет?

     
     
  • 2.48, тоже Аноним, 14:12, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Если позволите, вопрос от не читавшего стандарт А что, в С разыменование указат... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.61, Аноним, 14:40, 30/10/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    Еще чего не хватало ... весь текст скрыт [показать]
     
  • 3.62, Филипп Филиппович, 14:41, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Вы про нулевой указатель и tun- sk Да, там прибавление смещения Но ведь даже ... весь текст скрыт [показать]
     
     
  • 4.67, Аноним, 14:49, 30/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    На любой вменяемой платформе это 0 ... весь текст скрыт [показать]
     
     
  • 5.76, Филипп Филиппович, 15:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Э, не спешите Если в плоской модели, то наверное Я другого ещё не видел, во вс... весь текст скрыт [показать]
     
     
  • 6.80, Аноним, 15:20, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Я же специально написал "на любой вменяемой платформе" :)
     
  • 6.118, dq0s4y71, 17:30, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Вообще-то, на любой платформе это 0 Внутреннее представление значения не имеет ... весь текст скрыт [показать]
     
     
  • 7.128, Филипп Филиппович, 17:59, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну я же говорил не о том, что оно сравнивается с нулём на C Я говорил именно о ... весь текст скрыт [показать]
     
  • 7.206, arisu, 09:03, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    тут нюанс NULL 8212 это всегда 0, и всегда обозначает 171 негодный указате... весь текст скрыт [показать]
     
  • 4.71, тоже Аноним, 14:54, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Да, пардон, это я напутал Никаких проверок в самом коде, конечно Это система в... весь текст скрыт [показать]
     
     
  • 5.72, Аноним, 14:55, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Разумеется это не так ... весь текст скрыт [показать]
     
  • 5.74, Филипп Филиппович, 14:58, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Нет, всё не так - Очень много где будет защита и от чтения Стандарт такую пр... весь текст скрыт [показать]
     
  • 5.107, Crazy Alex, 17:05, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    На каком-нибудь эмбеде запись по нулевому адресу может быть абсолютно корректной... весь текст скрыт [показать]
     
     
  • 6.127, dq0s4y71, 17:56, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Такая запись, возможно, не вызовет исключения, но это не значит, что она будет к... весь текст скрыт [показать]
     
     
  • 7.135, Crazy Alex, 18:25, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    На AVR по нулевому адресу находится регистр R0 Читать писать его таким образом ... весь текст скрыт [показать]
     
     
  • 8.151, Аноним, 20:05, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    AVR вообще гарвардец, по поводу чего у него несколько адресных пространств в сам... весь текст скрыт [показать]
     
     
  • 9.162, Crazy Alex, 21:01, 30/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Угу, гаврвардец Но ещё у него регистры спроецированы в адресное пространство Ч... весь текст скрыт [показать]
     
     
  • 10.169, Аноним, 21:45, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Да, иногда это удобно Был тут один проц - ему переполнение буфера перезаписы... весь текст скрыт [показать]
     
     
  • 11.198, тоже Аноним, 08:35, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Два способа навскидку ассемблерные вставки и какое-нибудь PRAGMA_I_KNOW_WHAT_I_... весь текст скрыт [показать]
     
  • 10.207, arisu, 09:05, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    а это туда, к дизайнерам стандарта NULL оно же 0 8212 это 171 негодный у... весь текст скрыт [показать]
     
     
  • 11.322, Аноним, 10:17, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Дяденьки, идите нафиг На сях можно и как-то так void entry void 0x0 in... весь текст скрыт [показать]
     
     
  • 12.325, arisu, 11:02, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    > На это gcc даже warning не выдает.

    и не должно.

     
  • 7.146, Филипп Филиппович, 19:24, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Это к вопросу про то, какой указатель Там было несколько моделей памяти, в том ... весь текст скрыт [показать]
     
  • 3.205, arisu, 09:00, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    нет этого делать нельзя, но по рукам никто не ударит, и код проверки тоже не вс... весь текст скрыт [показать]
     
  • 1.24, Tav, 13:32, 30/10/2013 [ответить] [смотреть все]  
  • +5 +/
    В приведенных примерах компилятор следует стандарту, а программист предполагает определенное поведение в случаях, для которых оно не определено. Это не проблема компилятора.
     
     
  • 2.27, Филипп Филиппович, 13:39, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Именно так Но, возможно, проблема пользователя, который получил некорретно рабо... весь текст скрыт [показать] [показать ветку]
     
  • 1.40, commiethebeastie, 13:49, 30/10/2013 [ответить] [смотреть все]  
  • +1 +/
    -ffast-math годный дырооптимизатор.
     
  • 1.42, Андерй, 13:54, 30/10/2013 [ответить] [смотреть все]  
  • –1 +/
    Интересно, какие ошибки компилятора нужны АНБ, что используется именно определённая старая версия для TrueCrypt?...
     
  • 1.54, dq0s4y71, 14:19, 30/10/2013 [ответить] [смотреть все]  
  • +2 +/
    Как здесь справедливо заметили, это - косяки программистов. В первом примере, если вы ожидаете переполнения (т.е. перехода в область отрицательных значений), то вы должны и проверять его КОРРЕКТНО, т.е.:

            if ((intptr_t)buf + len < buf)

    Этот код работает как надо при любой оптимизации, можете проверить.

    Второй пример вообще странный. Если tun == NULL, то ваша программа упадёт ещё до того, как она достигнет оптимизируемого участка. Обвинять оптимизацию в том, что она неправильно компилит и без того кривую программу - это, конечно, сильно...


     
     
  • 2.123, клоун Стаканчик, 17:40, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Если len объявлена беззнаковым числом, то buf len buf ложно при любых значениях ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.132, dq0s4y71, 18:23, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Почему это Сравниваются ведь указатели, а не целые, поэтому целое будут преобра... весь текст скрыт [показать]
     
     
  • 4.137, клоун Стаканчик, 18:43, 30/10/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Почему это Сравниваются ведь указатели, а не целые, поэтому целое будут преобра... весь текст скрыт [показать]
     
     
  • 5.143, Ordu, 19:06, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Нет Пример для 32-х битной платформы buf void 0xffffffff len 1 ... весь текст скрыт [показать]
     
  • 5.144, ананим, 19:06, 30/10/2013 [^] [ответить] [смотреть все]  
  • +3 +/
    Проводить сравнение методом 171 а давайте попробуем вызвать переполнение 187... весь текст скрыт [показать]
     
  • 5.150, Аноним, 19:55, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Вот ты и показал что ты болванчик Как ты думаешь, что будет если к 32-битному u... весь текст скрыт [показать]
     
     
  • 6.159, Аноним, 20:27, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Так думает не он, разработчики компиляторов ... весь текст скрыт [показать]
     
     
  • 7.167, ананим, 21:21, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Неа Так думаешь ты и ахтур этого гoвнoкoда А компилятор думает а С детишкам н... весь текст скрыт [показать]
     
  • 7.170, Аноним, 22:08, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    На самом деле все проще математика у процов так работает ... весь текст скрыт [показать]
     
  • 7.208, arisu, 09:09, 31/10/2013 [^] [ответить] [смотреть все]  
  • +4 +/
    нет разработчики компиляторов следуют стандарту, в котором сказано, что перепол... весь текст скрыт [показать]
     
     ....нить скрыта, показать (10)

  • 1.63, annulen, 14:45, 30/10/2013 [ответить] [смотреть все]  
  • +4 +/
    Оптимизации компилятора не нарушают стандарт языка, так что достаточно не писать код с undefined behavior, или выявлять его с помощью инструментов, таких как UB sanitizer в Clang.
     
  • 1.68, iZEN, 14:50, 30/10/2013 [ответить] [смотреть все]  
  • –4 +/
    Доигрались. Вот так.
     
     
  • 2.73, ананим, 14:58, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    До чего Что быдлo-кoд также ещё и быдлo-oптимизируется Так это и без этой рекл... весь текст скрыт [показать] [показать ветку]
     
  • 2.148, Аноним, 19:47, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Жду когда изя перепишет фряшечку на яву :).
     
  • 1.84, Пиу, 15:36, 30/10/2013 [ответить] [смотреть все]  
  • +1 +/
    новость - боян и фигня. уже много лет говорят про UB и что нужно его избегать.

    было бы куда интереснее, если бы они взяли настоящие баги компиляторов (а их много) и нашли те, которые бы приводили бы к проблема безопастности приложений.
    а так - это курсовая второкурсника на факультете информационной безопастности

     
  • 1.90, Аноним, 15:59, 30/10/2013 [ответить] [смотреть все]  
  • –1 +/
    Главное, что они написали анализатор, который тычет программистов в их косяки А... весь текст скрыт [показать]
     
     
  • 2.110, Crazy Alex, 17:10, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Вот как раз компилятор этого делать и не должен Он должен запускаться один раз ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.160, NoName, 20:54, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    SRP вообщето...
     
     
  • 4.163, Crazy Alex, 21:05, 30/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну да, с аббревиатурами я не в ладах - в голове оно всё же не словами хранится ... весь текст скрыт [показать]
     
  • 3.306, Аноним, 19:03, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Ага И так как про сообщения об ошибках компиляции в стандарте ничего не сказано... весь текст скрыт [показать]
     
  • 3.310, annulen, 21:43, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Собственно, clang это и делает, если не просить о большем Замечательно И как т... весь текст скрыт [показать]
     
  • 2.176, Аноним, 22:29, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Давайте компилятор еще и программы писать начнет вместо программиста А программ... весь текст скрыт [показать] [показать ветку]
     
  • 1.96, pavlinux, 16:14, 30/10/2013 [ответить] [смотреть все]  
  • +/
    > подготовлен специальный статический анализатор STACK.

    Они его ужо открыли?

     
     
  • 2.112, Crazy Alex, 17:13, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    git clone git://g.csail.mit.edu/stack
     
     
  • 3.219, pavlinux, 15:03, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    > git clone git://g.csail.mit.edu/stack

    Да ладно!?!?!

     
  • 1.108, BratSinot, 17:05, 30/10/2013 [ответить] [смотреть все]  
  • +1 +/
    Мне кажется или подобные "проверки" на выход за пределы сами по себе ошибки?
     
     
  • 2.149, Аноним, 19:51, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Особенно порадовало if buf len buf Хакиры, однако Про переполнение зна... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.220, pavlinux, 15:10, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Ваш вариант определения переполнения суммы, при условии, что операнды должны быт... весь текст скрыт [показать]
     
     
  • 4.223, arisu, 15:39, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    а тут уже не раз приводили, вообще-то в данном случае 8212 UINTPTR_MAX- ui... весь текст скрыт [показать]
     
     
  • 5.271, Аноним, 23:45, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    так нельзя, т к UINTPTR_MAX может быть больше фактического значения адреса Во... весь текст скрыт [показать]
     
     
  • 6.274, arisu, 06:05, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    хм портабельного метода узнать 171 место, где Земля закругляется 187 нет н... весь текст скрыт [показать]
     
     
  • 7.280, all_glory_to_the_hypnotoad, 12:36, 01/11/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    для тупых ещё раз объясняю, uintptr_t может иметь большую битность чем void , не... весь текст скрыт [показать]
     
     
  • 8.285, arisu, 13:21, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    читать учись, дятел.
     
  • 6.277, клоун Стаканчик, 11:03, 01/11/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Проблема возникает исключительно при программировании ядра Линукс Для всех оста... весь текст скрыт [показать]
     
     
  • 7.278, arisu, 11:07, 01/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    а потом офигевают отчего это их говнософт не собирается на другой платформе ах... весь текст скрыт [показать]
     
     
  • 8.282, клоун Стаканчик, 13:03, 01/11/2013 [^] [ответить] [смотреть все]  
  • –2 +/
    Для реализации специфического функционала делают HAL Внешне код из ifdef X86 ... весь текст скрыт [показать]
     
     
  • 9.286, arisu, 13:22, 01/11/2013 [^] [ответить] [смотреть все]  
  • +2 +/
    8230 и радостно вызывают внешнюю функцию для сложения круто я понимаю, п... весь текст скрыт [показать]
     
     
  • 10.287, клоун Стаканчик, 13:46, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    inline bool isOverflow(ptr,size);

    if(isOverflow(buf,len))fail();

     
     
  • 11.288, arisu, 13:49, 01/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    других операций у нас не бывает, ага.
     
     
  • 12.289, клоун Стаканчик, 14:24, 01/11/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    Не затруднит привести пример кода на Си, который, по твоему мнению, нельзя выдел... весь текст скрыт [показать]
     
  • 9.298, Michael Shigorin, 15:13, 01/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Разве что себя, поскольку одноплатформенный профессионал -- это оксюморон ... весь текст скрыт [показать]
     
  • 7.279, тоже Аноним, 11:07, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    И очень этим радуют неадекватных людей, которые собирают не только под x86 Толь... весь текст скрыт [показать]
     
  • 7.281, all_glory_to_the_hypnotoad, 12:41, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    в ядре всегда известна модель памяти И нигде нет необходимости проверять перепо... весь текст скрыт [показать]
     
  • 7.297, Michael Shigorin, 15:10, 01/11/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    > Из темы ядро никто не разрабатывал

    Врёте.

     
  • 5.273, pavlinux, 02:33, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    В общем если так дрочить код, то проще изначально не создавать проблем.
     
     
  • 6.275, arisu, 06:07, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    p s павлин, ну хлоп твою железку ну перестань же ПОЛНОСТЬЮ посты перед... весь текст скрыт [показать]
     
  • 4.323, Аноним, 10:45, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Изначально неверная постановка задачи На самом деле цель - поймать выход за гра... весь текст скрыт [показать]
     
  • 1.133, Аноним, 18:23, 30/10/2013 [ответить] [смотреть все]  
  • +1 +/
    Пардон, но если программист в своём коде допускает случаи, когда поведение прогр... весь текст скрыт [показать]
     
     
  • 2.141, клоун Стаканчик, 18:57, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это называется парадокс римского права знать все законы невозможно, при этом не... весь текст скрыт [показать] [показать ветку]
     
  • 2.174, Аноним, 22:28, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Именно так - при том уповать на то что не описано в стандарте и или а вроде раб... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.209, arisu, 09:12, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    притом в конкретно описаной ситуации и там же сказано, что в другой ситуации по... весь текст скрыт [показать]
     
  • 3.222, pavlinux, 15:21, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    Всё такие вумные Если уж вдаваться в абсолютизм, то НЕЛЬЗЯ ОБЕСПЕЧИТЬ КОРРЕКТН... весь текст скрыт [показать]
     
     
  • 4.225, Crazy Alex, 15:40, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Этот абсолютизм к реальной жизни ни малейшего отношения не имеет.
     
     
  • 5.259, pavlinux, 17:43, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Нужно добавить к твоей реальной жизни В институтах, на мех -мате МГУ, в МИФИ, ... весь текст скрыт [показать]
     
  • 4.231, arisu, 15:51, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    чушь возможно, даже в случае, когда не гарантируется, что все 171 примитивы ... весь текст скрыт [показать]
     
     
  • 5.261, pavlinux, 17:53, 31/10/2013 [^] [ответить] [смотреть все]  
  • +/
    Знаешь такую фичу, что корректность перевода на иностранный язык, с целью понима... весь текст скрыт [показать]
     
     
  • 6.262, arisu, 17:58, 31/10/2013 [^] [ответить] [смотреть все]  
  • +1 +/
    это для тех, кто язык плохо выучил а для тех, кто хорошо выучил 8212 171 е... весь текст скрыт [показать]
     
     
  • 7.272, pavlinux, 01:55, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Этот нюанс зовётся компилятор, ибо на C ты напишешь if x 0 , а компулятор... весь текст скрыт [показать]
     
     
  • 8.276, arisu, 06:09, 01/11/2013 [^] [ответить] [смотреть все]  
  • +/
    нет, этот нюанс зовётся 171 процессор 187 test 8212 это побитовый and, в... весь текст скрыт [показать]
     
     
  • 9.316, pavlinux, 02:14, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну вот и представь ституёвину, когда программа после команды test ломается , та... весь текст скрыт [показать]
     
     
  • 10.326, arisu, 11:03, 02/11/2013 [^] [ответить] [смотреть все]  
  • +/
    если предполагается, что примитивы могут косячить, то не поверишь 8212 сначал... весь текст скрыт [показать]
     
     
  • 11.333, pavlinux, 02:08, 03/11/2013 [^] [ответить] [смотреть все]  
  • +/
    Ну вот слава яйца, хоть народ до компилятора добрался и отловили описанные в нов... весь текст скрыт [показать]
     
  • 1.147, Аноним, 19:42, 30/10/2013 [ответить] [смотреть все]  
  • –1 +/
    Выход один, компилятор должен компилировать, а вот оптимизировать ли код должен ... весь текст скрыт [показать]
     
     
  • 2.152, const86, 20:14, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Это полумера Достаточно заковыристый код может и без оптимизатора стать дырой в... весь текст скрыт [показать] [показать ветку]
     
  • 2.175, Аноним, 22:28, 30/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    gcc -O0 вам в руки ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.186, Сталин, 00:56, 31/10/2013 [^] [ответить] [смотреть все]  
  • –1 +/
    gcc -O0  | upx -9
     
  • 1.191, arisu, 08:22, 31/10/2013 [ответить] [смотреть все]  
  • +4 +/
    после первого говнопримера читать прекратил: результат 'buf + len' при переполнении тупо не определён. «группе исследователей» — гоугоу читать стандарты, а потом уже делать заявления.

    дятлы.

     
  • 1.244, Аноним, 16:27, 31/10/2013 [ответить] [смотреть все]  
  • +/
    Это просто ещё одно доказательство, что убогий сипипи не приспособлен для промыш... весь текст скрыт [показать]
     
     
  • 2.247, arisu, 16:32, 31/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    а они там уже перестали язык-то перетрясать и стандартные библиотеки пока что ... весь текст скрыт [показать] [показать ветку]
     
  • 2.263, тоже Аноним, 18:38, 31/10/2013 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вообще-то это аксиома любой убогий язык не приспособлен для мэйнстрима Просто ... весь текст скрыт [показать] [показать ветку]
     
  • 1.335, rihad, 16:41, 06/11/2013 [ответить] [смотреть все]  
  • +/
    Код сам неосторожно написан Компилятор просто следует стандарту, а стандарт гла... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor