The OpenNET Project / Index page

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

Критическая уязвимость в реализации функции memcpy для ARMv7 из состава Glibc

21.05.2020 22:56

Исследователи безопасности из компании Cisco раскрыли детали уязвимости (CVE-2020-6096) в реализации предоставляемой в Glibc функции memcpy() для 32-разрядной платформы ARMv7. Проблема вызвана некорректной обработкой отрицательных значений параметра, определяющего размер копируемой области, из-за использования ассемблерных оптимизаций, манипулирующих знаковыми 32-разрядными целыми числами. Вызов memcpy() на системах ARMv7 с отрицательным размером приводит к некорректному сравнению значений и записи в области вне границ указанного буфера.

Уязвимость может быть эксплуатирована для выполнения кода в ситуации, когда атакующий может организовать формирование отрицательного значения переменной, через которую передаётся размер копируемых данных (например, уход в минус будет при передаче более 2 ГБ данных, но в процессе атаки для выхода за пределы буфера нужно передать как минимум 4ГБ). Функция memcpy() активно применяется в приложениях, а процессоры ARMv7 распространены в автомобильных системах, мобильных, промышленных, потребительских, коммуникационных и встраиваемых устройствах, которые потенциально могут стать объектами атак с использованием Bluetooth, HD Radio/DAB, USB, CAN bus, Wi-Fi и других внешних источников данных (например, могут быть атакованы доступные по сети сервисы и приложения, принимающие входные данные без ограничения размера).

В качестве примера приводится создание рабочего эксплоита для атаки на встроенный в автомобильные информационные системы http-сервер, доступный через автомобильную Wi-Fi сеть. Посторонний атакующий может эксплуатировать уязвимость в memcpy в данном сервере через передачу GET-запроса очень большого размера и получить root-доступ к системе.

На 32-разрядных системах x86 проблема не проявляется, так как реализация memcpy для данной архитектуры корректно интерпретирует переменную с размером как беззнаковое целое значение с типом size_t (в написанной на ассемблере реализации для ARMv7 вместо size_t оно обрабатывается как signed integer). Исправление пока доступно в виде патча, который войдёт в состав августовском обновлении Glibc 2.32. Исправление сводится к замене использования ассемблерных инструкций, оперирующих знаковыми операндами (bge и blt), на беззнаковые аналоги (blo и bhs).

Проблема пока не устранена в Debian 9 и 10 (в Debian 8 не проявляется), Fedora, Ubuntu, OpenEmbedded, Tizen (используется glibc). RHEL и SUSE проблема не затрагивает, так как они не поддерживают 32-разрядные системы ARMv7. Android не подвержен уязвимости, так как использует собственную реализацию libc (Bionic). В OpenWRT по умолчанию в большинстве сборок используется Musl, но в репозитории имеется и glibc.

  1. Главная ссылка к новости (https://blog.talosintelligence...)
  2. OpenNews: Удалённо эксплуатируемая уязвимость в почтовом сервере qmail
  3. OpenNews: Критическая уязвимость в bash, которая может привести к удалённому запуску команд
  4. OpenNews: Уязвимость в e2fsck, проявляющаяся при обработке специально оформленных каталогов
  5. OpenNews: Уязвимость в библиотеке libjpeg-turbo
  6. OpenNews: В Bash выявлено ещё четыре уязвимости, эксплуатируемые через переменные окружения
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53003-glibc
Ключевые слова: glibc, memcpy
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (82) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.41, Ordu (ok), 10:33, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +23 +/
    Наблюдаю в комментах непонимание, поэтому краткая справка для далёких от машинного представления чисел.

    Знаковые числа и беззнаковые -- это просто наборы бит. Никто не запрещает один и тот же набор бит интерпретировать как знаковый или беззнаковый. Чаще всего, получается примерно такое соответствие:

    0 <=> 0
    1 <=> 1
    ...
    2^31-2 <=> 2^31-2
    2^31-1 <=> 2^31-1
    2^31 <=> -2^31
    2^31+1 <=> -2^31+1
    ...
    2^32-1 <=> -1

    Для знакомых с группами вычетов Z/nZ: знаковые и беззнаковые -- это одна и та же факторизация множества целых чисел, но представители классов выбраны разные. Это как группу Z/3Z можно представлять как множество элементов {0, 1, 2}, а можно как {-1, 0, 1}.

    (Кстати обратите внимание, если не сталкивались с этим раньше: abs(abs(x)) не всегда равен x. -2^31 -- это самое большое по модулю число, и оно одно, для него нет положительной пары. Бага системы кодирования чисел, которая иногда становится занозой в заднице).

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

    Обсуждаемый бажный memcpy работал с size как со знаковым числом. Для значений меньше чем 2^31 это работало как надо, потому что если такие беззнаковые числа интерпретировать как знаковые, то они по смыслу будут тем же самым. А вот для значений больше либо равных 2^31 уже не работало, потому что если их интерпретировать как знаковые, то получатся отрицательные числа.

    И собственно эксплуатация бага свелась к тому, чтобы добиться передачи в memcpy буфера с размером в 2Gb или больше. То есть код, использующий memcpy может быть 100% безбажным, и тем не менее эксплоит будет возможен, при наличии такой бажной реализации memcpy.

     
     
  • 2.51, CAE (ok), 12:20, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Гм. Современное поколение программистов не знает что такое прямой, обратный и дополнительный код? :))
     
     
  • 3.52, смузихлеб вейпер тимлид (?), 12:41, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    эй потише там
     
  • 3.80, Аноним (80), 05:13, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Программист - слишком громкое название для вебмакаки, там из образования книжка по пэхапэ прочитанная за неделю. И все, можно идти твАрить.
     
  • 3.86, Аноним (86), 01:49, 25/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ох уж эта русскоязычная терминология. Конечно, современные программисты ее не знают.
    По-английски это называется ones’ complement.
     
  • 2.53, Аноним (53), 13:54, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > abs(abs(x)) не всегда равен x.

    Вообще-то никогда не равен, если x - отрицательное.

     
     
  • 3.58, Ordu (ok), 14:29, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А, простите, перепутал операцию. Да, имелось в виду -(-x).
     
  • 2.56, PnD (??), 14:26, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Объяснил так объяснил Для далёких Попробую показать на пальцах для остальных... большой текст свёрнут, показать
     
     
  • 3.72, Аноним (72), 09:37, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даёшь троечную систему счисление!!!
     
     
  • 4.81, Аноним (-), 05:23, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Такая даже была на заре развития компьютеров, но популярности не снискала, только тогда уж "троичная".
     
  • 3.74, BSA (?), 15:33, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    "Второе дополнение"? Обычно, это называется просто "дополнительный код числа" и он именно от "дополнения единицей". Число не "переворачивают", а инвертируют: 0 заменяют на 1, а 1 на 0.
    Ваше объяснение тоже не сильно лучше.  А местами просто вводит в заблуждение.
     
     
  • 4.84, Аноним (84), 07:00, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    да он только вчера книжку прочитал, ещё не все термины запомнил, вероятно, имелось в виду "дополнение до двух"
     
  • 2.77, InuYasha (?), 17:12, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    С древних времён у меня вызывало недоумение: кто и зачем всякие memcpy() определяет в signed-типами?...
    Ну и всякие int count, int size и т.п. Проверки на -1 - не оправдание - это симптом уже случившегося кабздеца.
     
     
  • 3.82, Аноним (-), 05:28, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле кабздец - вообще не там Проблема в том что когда делается математ... большой текст свёрнут, показать
     
     
  • 4.85, InuYasha (?), 11:11, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и кому будет надо всю алгоритмику на скорости 1/3 от того что
    > сейчас есть, даже если это чуть безопаснее?

    Всем. В debug-версии. И ещё горы ASSERT-ов и логов. Отладил - и можно в релиз, где проверок меньше. А в редко используемых функциях типа Init и Create я проверки вообще не вырубаю.

     
  • 4.90, Аноним (90), 09:34, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    нужна аппаратная поддержка корректности
    типа (условный ассемблер)
    add Ax,Bx ; сложение когда переполнение не ошибка
    add Ax,Bx ; сложение когда переполнение ошибка, выполняется процем параллельно и на производительность не влияет.
     

  • 1.1, native76 (ok), 23:29, 21/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    звучит страшновато
     
     
  • 2.2, BSDun (?), 23:38, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Хорошо звучит. Можно будет рутовать ARMv7 устройства, а затем обновлять глибси.
     
     
  • 3.10, Аноним (10), 00:21, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Всякую встроенку которая никогда не обновится теперь можно ломать.
     
     
  • 4.17, Аноним (17), 00:57, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Во всякой встроенке скорее всего будет другая libc.
     
     
  • 5.91, sabretoothedhamster (?), 15:06, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, кстати, да, про другие либы что-нибудь пишут (типа uClibc/ng)?
     
  • 3.60, Аноним (60), 17:49, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Welchia 2.0
     
  • 3.68, погроммист (?), 00:29, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Надо только сначала найти ARMv7 устройство с более чем 2гб памяти.
     
  • 2.18, Ivan_83 (ok), 00:58, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если у тебя в memcpy() приходит контролируемое удалённым пользователем значение длинны и код его до этого никак не валидировал - то memcpy() не виновато что в него мусор заслали.
    И вообще станно, у memcpy() для размера должен sixe_t использоваться, а он без знаковый.

    Короче, если и найдётся софт в котором из за этого дырка - то там она будет явно не одна.

     
     
  • 3.32, sfdsf (?), 08:58, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > станно, у memcpy() для размера должен sixe_t использоваться, а он без знаковый

    Вы Чукчи Писатели уже раздражать начинаете. Черным по бежевому написано же:
    >>в реализации для ARMv7 вместо size_t в добавленных для оптимизации ассемблерных вставках оно обрабатывается как signed integer

     
  • 3.34, Аноним (34), 09:23, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Во времена мамонтов были процессоры в которых беззнаковая арифметика была реализована, как то иначе чем у большинства. Из за этих героев весь мир должен страдать многие десятки лет.
     
     
  • 4.54, Анон123 (?), 14:07, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    То ли ещё было во времена грекоримлян...
     
  • 3.47, пох. (?), 11:51, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в memcpy, внезапно, частенько приходят данные пользователя - и длинна их контрол... большой текст свёрнут, показать
     

  • 1.3, Аноним (3), 23:47, 21/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Что-то непонятное на скриншоте. Вроде речь идёт о системе, основанной на GLibc, а запускают какой-то ехешник.
     
     
  • 2.5, Аноним (5), 23:54, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Что тут непонятно, запустили netcat на винде для атаки на внешний хост по сети.
     
  • 2.6, Sw00p aka Jerom (?), 23:55, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    на скриншоте показано подключение к сокету, который уже был открыт после экслоитинга.
     
  • 2.38, Аноним (38), 10:11, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Взлом системы с уже открытым портом, на котором уже висит рут-шелл с помощью вантузного нетката. Что непонятного? Это сиска... Там ещё питоновские файлы в некрософт-шояде редактируют и перфорс используют вместо гита. Сам видел. А ещё там заставляют людей использовать cisco-webex тех, кто не убедил начальство переползти на slack или skype, на худой уонец.
     
     
  • 3.67, териванов (?), 21:01, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кул стори, бро...
     

  • 1.4, Аноним (4), 23:53, 21/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стоит отметить, что и Android проблема тоже не затрагивает ввиду использования bionic вместо libc. Мало ли кто об этом не знает.
     
     
  • 2.7, Аноним (5), 23:56, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А какая связь bionic и glibc (GNU libc)? Это совершенно разные libc.
     
     
  • 3.8, Аноним (5), 23:58, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ой, прочитал "не затрагивает" как "затрагивает".
     
  • 2.11, gogo (?), 00:30, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не знает тот, кто не прочитал статью, а строчит комменты.
     
  • 2.14, vitalif (ok), 00:43, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    а жаль!
     
  • 2.15, Аноним (15), 00:57, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • –8 +/
     
     
  • 3.21, Аноним (21), 01:40, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 4.35, Аноним (35), 09:36, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • +4 +/
     
     
  • 5.40, Аноним (21), 10:14, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • –2 +/
     
  • 5.55, Школьник (ok), 14:16, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 5.59, с (?), 15:30, 22/05/2020 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
  • 5.62, Аноним (3), 18:40, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Я еще понимаю критику windows и из пользователей.

    А чем Макось и её пользователи лучше? Тоже закрытая хрень. И кому до того какое дело, что она официально сертифицирована на UNIX.

     
  • 2.73, Anonn (?), 10:47, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот, а Google винили в NIH-синдроме. Не даром они и boring ssl сделали, и много чего другого.
     

  • 1.24, Аноним (24), 03:42, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Совершенно непонятная новость. У memcpy аргумент имеет тип size_t как он в безанковый тип передали отрицательное число?
     
     
  • 2.29, Аноним (5), 08:24, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В коде использовались ассемблерные вставки с инструкциями для работы со знаковыми числами.
     
     
  • 3.30, Аноним (30), 08:50, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет там вставок, функция целиком на ассемблере написана.
     
     
  • 4.57, Жека Воробьев (?), 14:27, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    а еще у математиков бывают пустые множества, прикинь какая боль
     
     
  • 5.83, Аноним (-), 05:31, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Боль - это пытаться объяснить вебмакаке как работает рид-соломон :)
     
     
  • 6.88, cool29 (?), 12:54, 25/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не МАКАКА А МИСТЕР ГОРИЛЛА! Понял, да!? А ты УДАВ УЗЛОВАТЫЙ!
     

  • 1.26, Аноним (26), 06:21, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Предупреждали - не делать в коде С ассемблерных системно зависимых вставок.
     
     
  • 2.28, Онаним (?), 08:21, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Увы, если в коде эмбедовки делать это не делать - она ворочаться будет как Windows 2000 на 80486-25.
     
     
  • 3.36, Аноним (26), 09:51, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Согласен. Сам таким баловался, когда по просьбе знакомых докторов вьвер для томографа написал в начале 90-х.
     
  • 3.37, Аноним (37), 09:51, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не запустится. 80486 на 25 МГц — это SX, без сопроцессора, и более чем уверен, что специфические для Pentium инструкции были использованы. Плюс я не помню чипсетов для 80486, поддерживающих хотя бы 32 МБ ОЗУ (минимум для первых версий винтукея, на которых он только и может, что запуститься, где-то за полчаса).
     
     
  • 4.43, Zenitur (ok), 11:22, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сопроцессоры для 486 SX выпускались отдельно. https://ru.wikipedia.org/wiki/Intel487SX

    У меня на материнке с Am386DX-40 (1993 год) можно максимум установить 32 Мб ОЗУ, судя по документации. 8 30-pin SIMM-модулей по 4 Мб каждый. Но я не пробовал. На 486 и 72-pin SIMM не должно быть проблем

     
     
  • 5.64, Аноним (3), 18:46, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ты на Avito покупаешь или продаёшь?
     
  • 4.45, Онаним (?), 11:45, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > минимум для первых версий винтукея, на которых он только и может, что запуститься, где-то за полчаса).

    Вот!

     
  • 4.48, Онаним (?), 11:53, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > 80486 на 25 МГц — это SX

    Am486 DX-25 был вполне себе с сопром. Более того, двухштучник сопра и P5 не требовал и за полчасика взлетал и на SX.

     
  • 2.63, Аноним (3), 18:42, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >Предупреждали - не делать в коде С ассемблерных системно зависимых вставок.

    Кто и кого предупреждал?

     

  • 1.27, Аноним (27), 07:13, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    "встроенный в автомобильные информационные системы http-сервер". блин, дайте мне другой глобус
     
     
  • 2.49, пох. (?), 12:00, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В принципе, и этот глобус - достаточно большой, чтобы хватило на всех веб-макак.
    Я думаю, даже 2x1.5 им жырно, можно просто сваливать в одну траншею.
    Хотя, с другой стороны, чего матеръял-то зря переводить...

    "За холмом открывалось огромное поле. В поле, точно по линеечке,
    стояли рядами не то кресты, не то деревья, не то вязанки рогов. И перед
    каждым из них виднелись могильные холмики."

     
     
  • 3.71, Lex (??), 08:11, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Веб-макаками уже стали ассемблерные программисты под арм?)

    А вообще, даже забавно наблюдать за настолько нелепыми ошибками у «системных_и_не_веб_программистов»

     
  • 2.87, iPony129412 (?), 07:30, 25/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Было бы чего плохого...
     

  • 1.31, Аноним (30), 08:55, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    В новости ошибка. ВСЯ ФУНКЦИЯ ЦЕЛИКОМ НА АССЕМБЛЕРЕ. Нет никаких "вставок". https://code.woboq.org/userspace/glibc/sysdeps/arm/memcpy.S.html
     
     
  • 2.39, Аноним (39), 10:12, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Директивы препроцессора на С. (Хотя не знаю, можно ли препроцессор считать частью языка).

    А, еще комментарии сишные есть!

     
     
  • 3.46, Sw00p aka Jerom (?), 11:50, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага, с прототипом где явно указано size_t :)
     
  • 3.65, Аноним (3), 18:49, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нельзя. Препроцессор о синтаксисе C не знает, он просто тупо подставляет. Поэтому не может давать адекватных сообщений о проблемах.
     
  • 3.70, Аноним (30), 06:02, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Во многих ассемблерах были макросы (TASM, MASM), но в линуксовом их нет и добавили препроцессор из С. Этот препроцессор для много чего может использоваться, можно вызывать его отдельно.
     
     
  • 4.75, BSA (?), 15:39, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть там макросы .macro/.endm. Они позволяют создавать макросы, используемые как инструкции.
     
  • 2.69, Аноним (30), 05:54, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Три человека, что поставили минус. Всё теперь ясно о компетентности комментаторов в программировании.
     

  • 1.33, ЛениваяЖ (?), 09:05, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Размер копируемой должен быть от 2 Гб, для того, чтобы получить отрицательное значение
     
     
  • 2.44, Аноним (5), 11:26, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    2ГБ чтобы выйти на минус и ещё 2ГБ чтобы указатель сместить в конец первых 2ГБ. Следующие данные уже полезут за ожидаемый буфер.
     
  • 2.50, пох. (?), 12:02, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    и вот тебе жалко 2г нулей ради хорошего дела?!

     
  • 2.76, BSA (?), 15:41, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если послать через сжатый канал (например, http+gzip), то объемы будут значительно меньше.
     

  • 1.42, Аноним (42), 11:17, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Разработчики glibc в принципе не умеют в форматирование кода? Что там за каша?
     
     
  • 2.89, vle (ok), 23:52, 26/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это "всеми любимый" gnu coding style ;-)
     

  • 1.61, mos87 (ok), 18:36, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    нестрашно, добрый вендор всегда оберегает тебя через TrustZone бггг
     
  • 1.66, Аноним (66), 18:55, 22/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    просто надо было писать на rush а параметры передавать через https+json
     
  • 1.78, Аноним (78), 20:56, 23/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой идиот додумался для РАЗМЕРА использовать знаковое целочисленное?
     
     
  • 2.79, Аноним (21), 00:39, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто-то из POSIX. Глупые наверное, и конвенции сишные глупые выдумали. Совсем дурачки. Ты-то умный, вон сразу видно, надо было спросить у тебя.
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру