The OpenNET Project / Index page

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

Выпуск системной библиотеки Glibc 2.26

02.08.2017 21:55

После шести месяцев разработки состоялся релиз системной библиотеки GNU C Library (glibc) 2.26, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 66 разработчиков.

Из добавленных в Glibc 2.26 улучшений можно отметить:

  • В функции malloc реализована поддержка кэша, индивидуального для каждого потока, что позволило избавиться от блокировок, возникающих при использовании общего для всех потоков кэша, и существенно поднять производительность при выделении и освобождении небольших блоков памяти;
  • В библиотеку math для архитектур ia64, powerpc64le, x86-32 и x86-64 добавлена поддержка 128-разрядных операций с плавающей запятой, определённых в стандартах ISO/IEC/IEEE 60559:2011 (IEEE 754-2008) и ISO/IEC TS 18661-3:2015. Для задействования данной возможности в программах компилятор должен поддерживать тип _Float12 или __float128. Функциональность доступна при включении набора _GNU_SOURCE или __STDC_WANT_IEC_60559_TYPES_EXT__;
  • Объявлены устаревшими и отключены по умолчанию (для включения требуется сборка с "--enable-obsolete-rpc") компоненты Sun RPC, включая rpcgen, librpcsvc и заголовочные файлы Sun RPC. Также объявлены устаревшими модули NIS/NIS+, а также библиотеки libnss_nis, libnss_nisplus, libnss_compat и libnsl. В качестве замены рекомендуется использовать TIRPC, в котором имеется поддержка IPv6, или rpcsvc-proto;
  • Расширены возможности встроенного DNS-резолвера: реализовано определение изменения содержимого файла /etc/resolv.conf для оперативной загрузки изменённой конфигурации (для запрета автообновления предусмотрена опция "no-reload"); обеспечена возможность указания произвольного числа элементов в списке "domain search" в /etc/resolv.conf (ранее можно было указать не больше шести доменов); при указании опции "rotate" в glibc теперь случайным образом выбирается сервер имён, который будет использован первым (ранее первым всегда использовался сервер, указанным вторым в списке);
  • По умолчанию включены средства тонкой настройки runtime-компонентов, которые позволяют изменять поведение Glibc при помощи переменной окружения GLIBC_TUNABLES;
  • Добавлена функция reallocarray, позволяющая выделить память для нескольких отличающихся по размеру объектов без дополнительных затрат на очистку памяти, но с сохранением средств борьбы с целочисленными переполнениями;
  • Добавлены функции-обвязки для новых системных вызовов Linux - preadv2() и pwritev2(), которые отличаются от preadv() и pwritev() наличием ещё одного аргумента для передачи ядру дополнительных флагов. В настоящее время при наличии ядра Linux 4.7+ поддерживаются флаги RWF_SYNC (сброс данных и метаданных из кэша на носитель после выполнения операции) и RWF_DSYNC (принудительный сброс на носитель только данных);
  • В posix_spawnattr_setflags добавлена поддержка флага POSIX_SPAWN_SETSID, используемого для создания нового идентификатора сеанса session ID для порождённого процесса. Данный флаг намечен для включения в следующей версии стандарта POSIX, поэтому пока поставляется в составе расширений "_GNU_SOURCE";
  • Заголовочный файл errno.h теперь безопасно использовать из блоков на языке ассемблера, прошедших обработку в Си-препроцессоре;
  • Возможности, связанные с кодировками, информацией о типах символов и таблицами транслитерации, приведены в соответствие со спецификацией Unicode 10.0.0;
  • Удалён порт для Native Client с архитектурой ARMv7-A;
  • Из заголовочного файла string.h исключены inline-версии строковых функций, а макросы __USE_STRING_INLINES и __NO_STRING_INLINES больше ни на что не влияют;
  • Удалён нестандартный заголовочный файл xlocale.h, вместо которого следует использовать locale.h. Также удалён устаревший файл sys/ultrasound.h;
  • Удалена поддержка устаревшей функции cfree() вместо которой следует использовать free();
  • Для работы теперь требуется ядро Linux 3.2 или более новый выпуск. Для сборки Glibc необходимо наличие GNU Binutils 2.25+ и GCC 4.9+ (ограничение не распространяется на сборку приложений, использующих Glibc, только на сборку самого Glibc);
  • Устранены уязвимости:
    • CVE-2017-1000366 - локальное повышение привилегий через манипуляцию с содержимым переменной окружения LD_LIBRARY_PATH при вызове suid-приложений. На базе данной уязвимости была построена серия эксплоитов для локального получения прав root в рамках атаки Stack Сlash;
    • CVE-2017-12132 - DNS-резолвер подвержен спуфинг-атакам, манипулирующим фрагментацией пакетов большого размера;
    • CVE-2010-3192 - утечка информации через повреждение стека при вызове функции __stack_chk_fail;
    • CVE-2017-12133 - обращение к буферу после его освобождения (use-after-free) в коде clntudp_call из состава Sun RPC.


  1. Главная ссылка к новости (https://sourceware.org/ml/libc...)
  2. OpenNews: Релиз системной библиотеки Glibc 2.25
  3. OpenNews: Релиз системной библиотеки Glibc 2.24
  4. OpenNews: Удалённо эксплуатируемая уязвимость в Glibc, охватывающая большинство сетевых приложений в Linux
  5. OpenNews: Представлена стандартная Си-библиотека Musl 1.0.0, развиваемая в качестве альтернативы Glibc
  6. OpenNews: Выпуск стандартной Си-библиотеки Musl 1.1.16
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46959-glibc
Ключевые слова: glibc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (49) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:18, 02/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    И он стал ещё тяжелее и медленее.
     
     
  • 2.38, anonymus (?), 17:50, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему сразу тяжелее? Список изменений начинается как раз с изменения, которое ускоряет и избавляет от блокировок.
     

  • 1.2, Аноним (-), 22:32, 02/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –15 +/
    это щас мода такая, пихать dns-резолвер везде, где только можно?
     
     
  • 2.3, qwe (??), 22:37, 02/08/2017 [^] [^^] [^^^] [ответить]  
  • +28 +/
    боюсь спросить, как ты себе представляешь libc без резолвера? gethostbyname(3) как будет работать?
     
     
  • 3.5, Michael Shigorin (ok), 22:38, 02/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Тсс, спугнёте специалистов.  Интересно разве что -- двоих или одного...
     
     
  • 4.6, Спайк (?), 23:59, 02/08/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    зависит от того, сколько у вас сегодня ипостасей Михаил. очевидно две или три.
     
  • 4.15, пох (?), 10:01, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Тсс, спугнёте специалистов.  Интересно разве что -- двоих или одного...

    Миш, ничего, что я еще помню времена, когда libresolv/libresolv_r были отдельными как минимум в паре опенсорсных систем?
    (в линуксе вот не помню, хотя как раз линукс-то в embed-варианте вполне может оказаться собран вообще без ip протоколов)

     
     
  • 5.23, Crazy Alex (ok), 12:12, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас - практически не может - это, сичтай, всегда самый осмысленный способ взаимодействовать с окружающим миром - от мониторинга состояния до апдейтов. Если кому сильно надо - пусть сам извращается.
     
     
  • 6.25, пох (?), 13:00, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Сейчас - практически не может - это, сичтай, всегда самый осмысленный способ
    > взаимодействовать с окружающим миром

    обычно людям не очень нравится, когда их BMW взаимодействует с окружающим миром - ремонт дороговат. А если еще и окружающий мир норовит через какую-нибудь дырку с ней повзаимодействовать без спросу, то просто караул.
    То есть решение включать-не включать подобные элементы непосредственно в общий бинарник - оно ситуационное. Но раньше эти библиотеки происходили из окрестностей ISC, что как бе говорит нам о качестве их кода, а по мере переписывания - содержимое во всех известных мне проектах безальтернативно засосало в libc, включая ее кастрированные варианты.

    При этом какая-нибудь libpthread - по сей день отдельная сущность, хотя вот зачем ей быть отдельной - совершенно неясно (использование name resolving - это вопрос области применения программы, она предсказуема, использование позикс-тредов - исключительно вопрос дизайна, ты никогда не будешь уверен, что очередная программа их не использует или в следующей версии вдруг не начнет)

     
     
  • 7.29, Crazy Alex (ok), 14:03, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    "Людям" может сколько угодно не нравиться - но шансы, что устройства внутри будут со временем обмениваться инофрмацией по IP и с каким-то ресолвингом близки к 100% - как только число этих устройств за сотню перевалит. И то, что хорошая доля будет (как минимум, опосредованно) общаться ещё и со вненим миром - дорогой, другими машинами и т.д. - тоже понятно. И то, что весь этот зоопарк должен уметь отдавать диагностику (вероятно - удалённо) и обновлять фирмварь. В общем, куда б те "люди" делись, разве что обратно в пещеры.

    Впрочем, насчёт того, что libpthread совершенно напрасно отдельная сущность - согласен.

     
  • 7.55, yet another anonymous (?), 14:28, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > При этом какая-нибудь libpthread - по сей день отдельная сущность,

    как часть проекта glibc

    > ... хотя вот зачем ей быть отдельной - совершенно неясно

    наверное, чтобы можно было строить non-MT приложения (убирая overhead), если автор так видит.

     
  • 7.57, Ordu (ok), 21:37, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    libc имеет несколько реализаций posix-threads На линуксе стандартом используетс... большой текст свёрнут, показать
     
  • 5.49, Агроном (?), 04:08, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это было бы логично
     
  • 3.7, Аноним (-), 02:08, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Через систему инициализации systemd! )
     
  • 2.8, Аноним (-), 06:54, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Школотрон, либц это единственное место, где резолверу место
     
     
  • 3.9, Аноним (-), 07:45, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Агащазблин. А как дела с асинхронным резолвером в глибцах?
     
     
  • 4.19, Аноним (-), 10:16, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Асинхронность делай сам, для этого тебе дадены gethostbyname_r и gethostbyname2_r.
     
     
  • 5.37, Аноним (-), 17:30, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вапсчето

    "The gethostbyname*() and gethostbyaddr*() functions are obsolete. Applications should use getaddrinfo(3) and getnameinfo(3) instead."

     
     
  • 6.41, пох (?), 18:43, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > "The gethostbyname*() and gethostbyaddr*() functions are obsolete. Applications should
    > use getaddrinfo(3) and getnameinfo(3) instead."

    да-да, а то иначе ipv6 дыры могут ненароком их не зацепить.
    (ага, эти интерфейсы принесены нам теми же людьми)

     
  • 5.52, Аноним (-), 08:59, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Асинхронность делай сам, для этого тебе дадены gethostbyname_r и gethostbyname2_r.

    Вот такие идиоты работают в профессии. Вон из профессии!
    Все резолверы _уже_ написаны, например, adns, c-ares и т.д. Те, кто жалуется на glibc либо не знают,  что до них все написали, либо троли. Что касается самого glibc, то мне лично побарабану, что они там изобретают, т.к. это по факту шлак. И этот шлак годится только для лаб и курсовых, а в производстве это фуфло меняется на что-то действительно полезное.

     
     
  • 6.53, Andrey Mitrofanov (?), 09:37, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > они там изобретают, т.к. это по факту шлак. И этот шлак
    > годится только для лаб и курсовых, а в производстве это фуфло
    > меняется на что-то действительно полезное.

    Праильнаящитаю! KERNEL.EXE фарева.

     
  • 6.56, В (?), 20:38, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А производстве чего, стесняюсь спросить?
     

  • 1.4, Michael Shigorin (ok), 22:38, 02/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > (ранее первым всегда использовался сервер, указанным вторым в списке)

    Не только лишь всегда, но и когда в списке один? :)

     
  • 1.12, пох (?), 09:41, 03/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    единственную важную (и, увы, нерадостную) часть новости, как обычно, пыонэры даже не замечают. :-(

    Ну ладно, я может сдохнуть успею еще, пока оно не доберется до неновых-немодных дистрибутивов...

    (да, я про rpc)

     
     
  • 2.13, Культурмарксист (?), 09:57, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ++ много
     
  • 2.17, Crazy Alex (ok), 10:12, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Хм, единственное реальное их использование я видел для NFS, которая сама по себе - то ещё подарок (и как по мне - концептуально неверная идея). Опять же - не удалили, а заменили.
     
  • 2.18, A.Stahl (ok), 10:14, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > (да, я про rpc)

    И в чём проблема, комсомолец? Тебе же дали альтернативу да ещё и с поддержкой IPv6. Или тебе шашеч^W слово SUN так нравится?


     
     
  • 3.21, пох (?), 11:41, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    мне совершенно не нужна "альтернатива" в виде дыры-v6. Разработанная комсомольцами с горящими сердцами и пустыми головами (кто, какие идиоты используют rpc over v6? Это ж девственные джунгли граблей от моря до моря), никому неинтересная, и поэтому гарантированно гнилая.

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

    А отсутствие rpc в libc - это, по сути, еще больший уход от нормальной юникс-системы в сторону yблюдства "как в виндовс, только НАХАЛЯВУ", причем без каких либо положительных моментов.

     
     
  • 4.22, Crazy Alex (ok), 12:10, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ну так пока дойдёт до "неновых-немодных" - разгребут грабли. Учитывая, что IPv6 уже неизбежен (чему лично я только рад) - ворчать тут не на что. Опять же - кто Sun RPC вообще использует?
     
     
  • 5.27, пох (?), 13:09, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ну так пока дойдёт до "неновых-немодных" - разгребут грабли. Учитывая, что IPv6
    > уже неизбежен (чему лично я только рад) - ворчать тут не
    > на что. Опять же - кто Sun RPC вообще использует?

       program version netid     address                service    owner
        100000    4    tcp       0.0.0.0.0.111          rpcbind    superuser
        100000    3    tcp       0.0.0.0.0.111          rpcbind    superuser
        100000    2    tcp       0.0.0.0.0.111          rpcbind    superuser
        100000    4    udp       0.0.0.0.0.111          rpcbind    superuser
        100000    3    udp       0.0.0.0.0.111          rpcbind    superuser
        100000    2    udp       0.0.0.0.0.111          rpcbind    superuser
        100000    4    local     /var/run/rpcbind.sock  rpcbind    superuser
        100000    3    local     /var/run/rpcbind.sock  rpcbind    superuser
        100000    2    local     /var/run/rpcbind.sock  rpcbind    superuser
    660035415    6    tcp       0.0.0.0.39.168         -          unknown

    кто опознал - респект ;-)
    нет, это не линукс, конечно, там уже и не заведется, наверное. Mar 25  2002 бинарничек, ага.
    Все еще работает.

     
     
  • 6.30, Crazy Alex (ok), 14:05, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так из того, что у вас там крутится, его никто и не забирает. А я вот в дебиане не вижу ни одного пакета, зависящего этой ерунды, когторый я бы в здравом уме стал использовать.
     
  • 5.28, пох (?), 13:11, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    и нет, не разгребут уже - некому.
    Скорее уж nfs доломают окончательно и бесповоротно.

     
     
  • 6.31, Crazy Alex (ok), 14:08, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и к лучшему. Она нынешним реалиям напрочь не адекватна, как и любые другие попытки сымитировать локальное взаимодействие поверх сетевого без оглядки на специфические реалии конкретного проекта. А с оглядкой - как правило, проще и надёжнее по HTTP какую-то более вменяемую логику организовать.
     
     
  • 7.34, пох (?), 15:59, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну и к лучшему. Она нынешним реалиям напрочь не адекватна

    ситуации, когда fs экспортируют системе а не юзеру - вполне адекватна и поныне. Хотя и распространена гораздо меньше.

    > на специфические реалии конкретного проекта. А с оглядкой - как правило,
    > проще и надёжнее по HTTP какую-то более вменяемую логику организовать.

    ну и если вам http проще и надежнее - то флаг, конечно, в руки.

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

     
     
  • 8.35, Crazy Alex (ok), 16:33, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Экспорт удалённых данных в виде FS плох тем, что клиент не знает, что он работае... текст свёрнут, показать
     
  • 5.36, cmp (ok), 17:10, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    v6 сдох давно, никогда его не внедрят, уже мплс внедрили, уже 3х факторный нат для п2п внедрили, и всеравно v4 еще есть, и смысл. скорее фсбэшный идентификатор гражданина внедряд туда, где не светит солнце.
     
     
  • 6.40, пох (?), 18:39, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вы же понимаете, при наличии большой дубины, "внедрить" вам могут и дохлого крота, даже давно уже дохлого.

    А дубина в лице icann/ripe/прочих у нас есть. И гугль поддержит.

     
     
  • 7.51, cmp (??), 04:22, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Регулятор, на то и регулятор, что напрямую не вмешивается, ни запретить, ни заставить не могут, рекомендовать и только, всем сра-ть.

    Гугл давно уже сдулся,есть альтернативы че они решают, апи в андоиде, дальше что, дальше все.

     
  • 6.42, Crazy Alex (ok), 19:43, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.google.com/intl/en/ipv6/statistics.html

    Вот примерно так и "сдыхает", по 50% в год.

     
     
  • 7.50, cmp (??), 04:14, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То есть для вас стакан уже на 22% заполнен, а для меня он на 78% пуст
     
     
  • 8.54, Crazy Alex (ok), 10:22, 04/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Для меня стабильно ускоряющийся рост распространённости по есть положительная ... текст свёрнут, показать
     
  • 4.46, Led (ok), 21:44, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > мне совершенно не нужна "альтернатива" в виде дыры-v6.

    Печально... Даже не знаю, что тебе предложить, кроме как "сделать вдоль" :(

     
  • 2.32, Аноним (-), 14:21, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    этой "новости" сто лет в обед. и глибцы с --enable-obsolete-rpc приходится собирать уже хрен знает какой релиз
     
     
  • 3.33, пох (?), 15:53, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    как я понимаю, смысл новости противоположный - "а мы это enable наконец-то доломали".
     
  • 3.39, Andrey Mitrofanov (?), 18:04, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > этой "новости" сто лет в обед. и глибцы с --enable-obsolete-rpc приходится собирать
    > уже хрен знает какой релиз

    "Тише-тише, профкссионала спугнёшь."

     
     
  • 4.47, Led (ok), 21:47, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> этой "новости" сто лет в обед. и глибцы с --enable-obsolete-rpc приходится собирать
    >> уже хрен знает какой релиз
    > "Тише-тише, профкссионала спугнёшь."

    "Тише-тише", он не просто "профкссионал", он "мишин учитель"!

     

  • 1.20, Аноним (-), 10:21, 03/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Самое существенное новшестство данного выпуска - 128-битная вещественная арифметика.
     
  • 1.24, Аноним (-), 12:15, 03/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    теперь случайным образом выбирается сервер имён, который будет использован первым

    Жуть.. скоро и math будет флоат вычислять случайным образом.

     
     
  • 2.26, A.Stahl (ok), 13:03, 03/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А когда и тип возвращаемого значения будет случайным, то получим PHP:)
     

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



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

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