-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80




Форум на Исходниках.RU


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://forum.sources.ru.
Данный дневник сформирован из открытого RSS-источника по адресу http://forum.sources.ru/yandex.php, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Починка мелкой уязвимости в важной библиотеке Linux вызвала к жизни жуткую «дыру». Под ударом все дистрибутивы

Среда, 18 Августа 2021 г. 09:43 + в цитатник
RSS_Bot: Починка мелкой уязвимости в важной библиотеке Linux вызвала к жизни жуткую «дыру». Под ударом все дистрибутивы

Закрытие бреши в одной из важнейших системных библиотек Linux glibc привело к возникновению гораздо более серьезной уязвимости. Она позволяет «уронить» почти любую программу и вызвать ошибку типа «отказ в обслуживании». Повышенный уровень привилегий для этого не нужен.
Опасная уязвимость

Опасная уязвимость была выявлена в важной библиотеке GNU C (glibc), которая присутствует во всех дистрибутивах Linux. С ее помощью можно остановить выполнение практически любой программы. Примечательно, что данная уязвимость появилась в glibc в результате попытки исправить другую, значительно менее серьезную ошибку.

Новая уязвимость, получившая идентификатор CVE-2021-38604, может использована для провоцирования ошибки сегментации (Segmentation fault) в произвольной программе и ее последующего аварийного завершения. На практике это означает, что сервер, работающий под управлением Linux, можно сравнительно легко вывести из строя и лишить клиентов доступа к сервисам. Причем для этого злоумышленнику не понадобится добиваться получения привилегий root (администратора).

CVE-2021-38604 (7,5 баллов из 10 по шкале опасности) была обнаружена специалистом американской компании Cloudlinux Никитой Поповым в ходе анализа бреши CVE-2021-3357 – тоже опасной, однако требующей от злоумышленника значительно больших усилий для ее эксплуатации. Последняя присутствовала в glibc версий 2.32 и 2.33, а к версии 2.34 была исправлена, породив позднее обнаруженную Поповым «дыру».

Glibc – это свободная реализация стандартной библиотеки языка программирования C. Она создана при поддержке Фонда свободного ПО (Free Software Foundation) и содержит ключевые функции, используемые ПО, написанным на языках C и C++. Glibc так или иначе используется большинством программ, предназначенных для запуска в ОС семейства Linux, в том числе различных компиляторов и интерпретаторов других языков. Glibc можно назвать вторым по важности компонентом любой ОС семейства Linux после ядра.

Cloudlinux развивает собственную коммерческую операционную систему Cloudlinux OS для хостинг-провайдеров, а с января 2021 г. – Almalinux, позиционируемую как замену CentOS.

Корни проблемы

Обе упомянутые ошибки фигурируют в файле sysdeps/unix/sysv/linux/mq_notify.c, в котором реализована системная функция mq_notify(), являющаяся частью программного интерфейса (API) для работы с очередью сообщений POSIX в glibc.

Механизм очереди сообщений обеспечивает обмен данными между различными процессами (программами или потоками) в реальном времени в операционных системах, отвечающих стандарту POSIX, в том числе и в ОС семейства Linux.

Функция mq_notify() позволяет зарегистрироваться для получения асинхронных уведомлений о появлении в очереди новых сообщений. Ошибки, которые привели к образованию уязвимостей связаны с некорректным управлением динамической памятью внутри данной функции.

user posted image
Проблемный патч, содержащий исправления, которые только усугубили ситуацию

Так, более ранняя из них в теории позволяет злоумышленнику добиться обращения к участку памяти после его освобождения, что может приводить к непредсказуемым последствиям, но, чаще всего – к «падению» программы. Однако на практике, по мнению главного инженера-программиста Red Hat Сиддхеша Поярекара (Siddhesh Poyarekar), это едва ли возможно – ни в одном из известных дистрибутивов Linux просто нет программ, которые подходили бы для эксплуатации данной уязвимости.

Тем не менее, это не означает, что проблему не нужно было решать. Для этого в код была добавлена по сути одна строка, которая включает обращение к функции удаления дескриптора потока (pthread_attr_destroy). Она принимает единственный аргумент – указатель на объект атрибутов потока, который определяет поведение создаваемого потока.

Если в качестве аргумента передать нулевой указатель (NULL), то есть не связанный с каким-либо объектом в памяти, это приводит к ошибке разыменовывания нулевого указателя, которая, в свою, очередь ведет к неопределенному поведению процесса – в большинстве случаев к его краху. Таким образом, чтобы «уронить» программу, использующую glibc 2.34, достаточно добиться передачи NULL в качестве аргумента pthread_attr_destroy().

Как выяснил Никита Попов, такой аргумент данная функция в реализации mq_notify() получит, если приложение попытается породить поток с атрибутами по умолчанию средствами библиотеки. То есть совершить атаку с использованием более «свежей» уязвимости значительно проще.

Исправление уже доступно

К счастью, для большинства администраторов ошибка, найденная Поповым, не успела добраться до популярных дистрибутивов, так как релиз glibc 2.34 состоялся сравнительно недавно – 1 августа 2021 г.

Исправление, состоящее из дополнительной проверки аргумента на соответствие нулевому указателю, уже включено в основную ветку glibc.

Ранее Киc Кук (Kees Cook), сотрудник Google и разработчик ядра Linux, заявил, что нужно срочно увеличить количество программистов, которые будут трудиться над улучшением безопасности ядра. Сил нынешнего штата не хватает, они не успевают обрабатывать все исправления, и в результате пока одна уязвимость устраняется сразу, другая может оставаться в коде годами. Также он предложил отказаться от языка С, назвав его небезопасным, и переписать ядро на Rust.

Адрес новости:
https://safe.cnews.ru/news/top/2021-08-17_ispravlenie_nebolshoj_breshi

https://forum.sources.ru/index.php?showtopic=422477&view=findpost&p=3851036


Метки:  

Найти ячейку по координатам

Вторник, 17 Августа 2021 г. 20:28 + в цитатник
Jin X: Короче, функции, которая возвращает ячейку по координатам, нет, так?

Добавлено
В общем, сделал перебором ячеек (Range) от TopLeftCell до RightBottomCell.
И дальше проверял нахождение нужной координаты внутри диапазона Left ... Left+Width.

https://forum.sources.ru/index.php?showtopic=422454&view=findpost&p=3851001


Метки:  

Найти ячейку по координатам

Вторник, 17 Августа 2021 г. 19:25 + в цитатник
Akina: По-моему, задача безнадёжная - ведь ещё и размеры ячеек имеют право быть разными, одни шире, другие выше... думаю, надо переходить от ячеек к пиксельным координатам в окне, и уже по ним искать центр и ячейку, поверх которой этот центр находится.

https://forum.sources.ru/index.php?showtopic=422454&view=findpost&p=3851000


Метки:  

Как в окне RichEdit определить надстрочные и подстрочные символы?

Вторник, 17 Августа 2021 г. 15:58 + в цитатник

Метки:  

Найти ячейку по координатам

Вторник, 17 Августа 2021 г. 14:53 + в цитатник
Jin X: Есть фигура (Shape), нужно найти ячейку в её центре. Есть TopLeftCell, есть RightBottomCell, а вот CenterCell нет, а мне надо :)
Короче, мне нужно найти ячейку по координатам (я могу взять у Shape Left+Widht/2 и Top+Height/2). Как это сделать?
Вариант взять среднее (Row, Column) между TopLeftCell и RightBottomCell не годится, результат кривой (часто находится не та ячейка).

https://forum.sources.ru/index.php?showtopic=422454&view=findpost&p=3850996


Метки:  

Как в окне RichEdit определить надстрочные и подстрочные символы?

Вторник, 17 Августа 2021 г. 11:24 + в цитатник
MBo: Rouse_
>Все в телеге сидят

Правда, что ли?

https://forum.sources.ru/index.php?showtopic=421824&view=findpost&p=3850994


Метки:  

Мультфильмы

Вторник, 17 Августа 2021 г. 10:58 + в цитатник
A.I.:
Цитата ya2500 @
И, да - недавно я начал смотреть сериал Рик и Морти 2013-го года. И знаете, что - это оказалось интересно!

с подключением. :whistle:

https://forum.sources.ru/index.php?showtopic=318829&view=findpost&p=3850992


Метки:  

Как в окне RichEdit определить надстрочные и подстрочные символы?

Вторник, 17 Августа 2021 г. 08:29 + в цитатник

Метки:  

Мультфильмы

Понедельник, 16 Августа 2021 г. 23:38 + в цитатник
ya2500: И, да - недавно я начал смотреть сериал Рик и Морти 2013-го года. И знаете, что - это оказалось интересно!

user posted image
user posted image

https://forum.sources.ru/index.php?showtopic=318829&view=findpost&p=3850987


Метки:  

Как в окне RichEdit определить надстрочные и подстрочные символы?

Понедельник, 16 Августа 2021 г. 22:03 + в цитатник
Profi: Да тут-то народа почти не осталось, а Delphi Master вообще узкоспециализированный форум.

https://forum.sources.ru/index.php?showtopic=421824&view=findpost&p=3850985


Метки:  

Сериалы

Понедельник, 16 Августа 2021 г. 20:48 + в цитатник
B.V.:
Цитата B.V. @
Так это же далеко не единственный сериал Марвел

В копилку прибыло с сериалом "Что если?.."
Пока есть только пилотка. Но вроде как ничего так

https://forum.sources.ru/index.php?showtopic=168501&view=findpost&p=3850983


Метки:  

Мультфильмы

Понедельник, 16 Августа 2021 г. 00:18 + в цитатник
ya2500: Казалось бы, не так давно я с удовольствием посмотрел первый сезон мультсериала Крайний Космос(Final Space), а их уже три! Три сезона!

Добавлено
user posted image

https://forum.sources.ru/index.php?showtopic=318829&view=findpost&p=3850961


Метки:  

TDM-GCC-64 и iconv в Windows

Воскресенье, 15 Августа 2021 г. 19:38 + в цитатник
amk: Юникод в консоли поддерживает уже XP. Но только UCS-2.

https://forum.sources.ru/index.php?showtopic=422452&view=findpost&p=3850956


Метки:  

Забавные цитаты

Воскресенье, 15 Августа 2021 г. 18:52 + в цитатник
Qraizer:
Цитата
xxx: Загадко: чем девопс отличается от контейнеровоза?
yyy: девопс чаще роняет контейнеры

https://forum.sources.ru/index.php?showtopic=287910&view=findpost&p=3850955


Метки:  

TDM-GCC-64 и iconv в Windows

Воскресенье, 15 Августа 2021 г. 12:20 + в цитатник
Qraizer:
Цитата korvin @
Разве? Вроде ещё в WinXP можно было, нужно было только шрифт сменить с дефолтного на Lucida.
Шрифт не проблема, проблема – UTF-8 страница. Не уверен, но вроде бы даже 7-ка не поддерживала юникод в консоли.

Добавлено
Цитата mkudritsky @
А может помимо
tdm64-gcc-10.3.0.exe
есть еще какие-нибудь 64bit компиляторы C/C++ для Windows?
Если тебе Qt, то вариантов в общем-то и нет. В целом же компиляторов вагон, та же Visual Studio без проблем компилит, причём не знаю как сейчас, но ещё недавно это был единственный компилятор, полностью поддерживающий C++20 на уровне языка и библиотеки.
Что да iconv, то его базовый функционал покрывается стандартными средствами C++. Но нельзя отрицать, что пользоваться iconv несколько удобнее, и возможностей там поболе. + поддержка чистого C. Впрочем, для Qt по любому C++ потребуется.

https://forum.sources.ru/index.php?showtopic=422452&view=findpost&p=3850939


Метки:  

TDM-GCC-64 и iconv в Windows

Воскресенье, 15 Августа 2021 г. 06:23 + в цитатник
mkudritsky: Господа, спасибо за советы!
Надо бы разобраться в кодовой странице 65001 и как ее использовать в программе C/C++.
Займусь этим!

Но вопрос про терминал я задал просто для сокращения своего поста.
Тут на самом деле в ряде консольных программ помимо терминала еще есть требование выводить результаты в текстовые файлы в кодировке только CP1251 и в Linux, и в Windows.
И использование iconv.h мне показалось самым элегантным.

А может помимо
tdm64-gcc-10.3.0.exe
есть еще какие-нибудь 64bit компиляторы C/C++ для Windows?
Может в этих альтернативных компиляторах есть нормальный модуль iconv.h?
Кстати, мне еще не понравилось, что tdm64 не знает макроса WINVER, а я его использую для выяснения среды исполнения программы (Linux или Windows) и приходится использовать:
-DWINVER

P.S. На всякий случай приведу код, который использую для вывода в консоль кирилицы (для вывода в txt-файлы кириллицы в CP1251 позже приведу):
    #include
    #ifndef WINVER
    #include sysinfo.h>
    #else
    #include
    #endif
    #include
    #include
    // Информация об основных параметрах ОС (главным образом - RAM)
    #ifndef WINVER
    struct sysinfo osInfo;
    char cSl = '/';
    #else
    MEMORYSTATUSEX osInfo;
    char cSl = '';
    #endif
    //---------------------------------------------------------------------------
    char *Utf8ToWin(const char *cIn) {
    // Преобразование строки cIn из кодировки utf-8 в кодировку cp1251
    // При преобразовании длина строки cp1251 не больше исходной длины строки utf-8
    // После использования выходной строки ее надо освободить функцией free()
    // Длина входной строки (без {text})
    size_t iIn = strlen(cIn);
    // Работа со строками ненулевой длины
    if (!iIn)
    return NULL;
    // Открытие преобразования
    iconv_t cd_code = iconv_open("cp1251", "utf-8");
    // Длина выходной строки и статус преобразования
    size_t iOut = iIn, iConv;
    // Выходная строка, указатель на элементы скрок при преобразовании (входной и выходной)
    char *cOut = (char *)calloc(iOut + 1, sizeof(char)), *cIn1 = (char *)cIn, *cOut1 = cOut;
    // Заполнение выходной строки символами конца строки /0
    memset(cOut, 0, iOut * sizeof(char));
    // Преобразование строки из utf-8 в cp1251
    iConv = iconv(cd_code, &cIn1, &iIn, &cOut1, &iOut);
    // Закрытие преобразования
    iconv_close(cd_code);
    if (iConv) {
    if (cOut) free(cOut);
    return NULL; // Если было хотя бы одно неудачное преобразование
    }
    // Вывод результата
    return cOut;
    }
    //---------------------------------------------------------------------------
    // Вывод содержимого строки sOut на консоль вне зависимости от OS
    void PrintCons(const char* cIn) {
    char* cOut;
    if (cSl == '/')
    cOut = (char *)cIn; // Linux
    else
    cOut = Utf8ToWin(cIn); // Windows
    printf("%s", cOut);
    if (cOut && (cSl != '/'))
    free(cOut);
    }
    //---------------------------------------------------------------------------

https://forum.sources.ru/index.php?showtopic=422452&view=findpost&p=3850934


Метки:  

Задача коммивояжера методом Монте-Карло

Воскресенье, 15 Августа 2021 г. 06:09 + в цитатник
mkudritsky: Эх, жалко, что я эту тему так поздно обнаружил (надо почаще на форум заходить).
Наверное, тема уже не актуальна, но я отвечу тем не менее.

1. Написать программу решения задачи коммивояжера (ЗК) методом Монте-Карло очень просто.
Задаем для разомкнутой ЗК массив из N элементов по числу городов:
short Gor[N], PromG, indG;
В ячейки массива заносим номера городов:
for (int i = 0; i < N; i++)
Gor[i] = i;

2. Генерируем индекс первого города:
indG = rand() mod N;
Меняем местами города с индексами 0 и indG:
PromG = Gor[0]; Gor[0] = Gor[indG]; Gor[indG] = PromG;

3. Работаем со i-м городом (по аналогии с первым):
indG = (rand() mod (N - i)) + i;
Меняем местами города с индексами i и indG:
PromG = Gor[i]; Gor[i] = Gor[indG]; Gor[indG] = PromG;

4. Ну и так далее. По пунктам 1 и 2 уже цикл просматривается.
Таких маршрутов генерируется столько, сколько нужно и сколько не жалко - чем больше, тем лучше.
Запоминается маршрут с минимальной суммарной длиной пути коммивояжера.

P.S. Общие замечания по труднорешаемой комбинаторной задаче коммивояжера.
А. Если число городов N достаточно большое, то о повторении маршрутов при генерации можно не беспокоиться - вероятность такого события чудовищно низка.
Например, при N=100 общее число маршрутов примерно равно 10^158, что несравнимо больше, скажем, миллиарда генерируемых маршрутов (10^9) в методе Монте-Карло.
Б. А судьи кто? С чем сравнивать найденный "оптимум" методом Монте-Карло?
ЗК методом полного перебора (МПП) решается для числа городов N=13..14 не более.
ЗК методом динамического программирования (МДП) точно решается для числа городов порядка N=30. При этом потребуется ПК с памятью 32-64Гб и информацию надо хранить не в байтах, а в отдельных битах!
Ну и для числа городов более 30 задача коммивояжера точно может быть решена только методом ветвей и границ (МВГ). При этом вероятность нахождения точного решения меньше единицы - а иначе ЗК не была бы труднорешаемой.
В любом случае оценить среднюю точность метода Монте-Карло можно только путем сравнения его решения с решением МПП, МДП и МВГ. Разумеется, программы МПП, МДП и МВГ писать существенно сложнее, чем программу метода Монте-Карло.

https://forum.sources.ru/index.php?showtopic=421287&view=findpost&p=3850933


Метки:  

D vs C++

Суббота, 14 Августа 2021 г. 21:11 + в цитатник
applegame:
Цитата D_KEY @
applegame, поясни за scope в данном кейсе, плиз.
Это чит :)
scope гарантирует компилятору, что лямбда не утечет за пределы скоупа функции. Соответственно компилятор может вместо аллоцирования замыкания на куче, просто передать в функцию указатель на контекст на стеке и указатель на функцию лямбды.

https://forum.sources.ru/index.php?showtopic=386813&view=findpost&p=3850930


Метки:  

TDM-GCC-64 и iconv в Windows

Суббота, 14 Августа 2021 г. 20:41 + в цитатник
korvin:
Цитата Qraizer @
Не проще ль в консоли поставить 65001 кодовую страницу? Работать будет только с 10-ки, правда.

Разве? Вроде ещё в WinXP можно было, нужно было только шрифт сменить с дефолтного на Lucida.

https://forum.sources.ru/index.php?showtopic=422452&view=findpost&p=3850928


Метки:  

TDM-GCC-64 и iconv в Windows

Суббота, 14 Августа 2021 г. 18:15 + в цитатник
Qraizer:
Цитата mkudritsky @
Устав пересохранять код программ то в UTF-8, то в CP1251, решил сделать универсальный код с использованием модуля iconv.h
Не проще ль в консоли поставить 65001 кодовую страницу? Работать будет только с 10-ки, правда. И консольного шрифта с полной поддержкой юникода, насколько мне известно, не существует, но для подмножества символов из общего набора в UTF-8 и ANSI-1251 это не проблема.

Добавлено
    std::cout << u8"Это строка в UTF8";
    D:\Work\DelMe>chcp 65001
    Active code page: 65001
    D:\Work\DelMe>a
    Это строка в UTF8
    D:\Work\DelMe>

https://forum.sources.ru/index.php?showtopic=422452&view=findpost&p=3850925


Метки:  

Поиск сообщений в rss_forum_sources_ru
Страницы: 2628 ... 2594 2593 [2592] 2591 2590 ..
.. 1 Календарь