Glibc 2.31 tizim kutubxonasi relizi

Olti oylik rivojlanishdan keyin e'lon qilindi tizim kutubxonasi chiqarilishi GNU C kutubxonasi (glibc) 2.31, bu ISO C11 va POSIX.1-2008 talablariga to'liq javob beradi. Yangi nashr 58 ta ishlab chiquvchi tomonidan tuzatilgan.

Glibc 2.31 da amalga oshirilgan uluchsheniy qayd qilishingiz mumkin:

  • Kelajakdagi ISO standarti loyihasida belgilangan imkoniyatlarni yoqish uchun _ISOC2X_SOURCE makrosi qo‘shildi C2X. Bu funksiyalar _GNU_SOURCE makrosidan foydalanganda yoki gcc-da “-std=gnu2x” bayrog'i bilan qurishda ham yoqiladi;
  • Natijalarini kichikroq turga yaxlitlovchi “math.h” sarlavha faylida aniqlangan funksiyalar uchun TS 18661-1:2014 va TS spetsifikatsiyalari talab qilganidek, “tgmath.h” faylida tegishli umumiy turdagi makroslar taklif etiladi. 18661-3: 2015;
  • Pthread_clockjoin_np() funksiyasi qo'shildi, u ishlama tugashini hisobga olgan holda, vaqt tugashini hisobga olgan holda (agar vaqt tugashidan oldin vaqt tugashi sodir bo'lsa, funktsiya xatolikni qaytaradi). Undan farqli o'laroq pthread_timedjoin_np(), pthread_clockjoin_np() da vaqt tugashini hisoblash uchun taymer turini aniqlash mumkin - CLOCK_MONOTONIC (tizimning uyqu rejimida o'tkazgan vaqtini hisobga oladi) yoki CLOCK_REALTIME;
  • DNS-resolver endi /etc/resolv.conf-dagi ishonchli reklama opsiyasini va _res.options-dagi RES_TRUSTAD bayrog'ini qo'llab-quvvatlaydi, o'rnatilganda DNSSEC bayrog'i DNS so'rovlarida uzatiladi. AD (tasdiqlangan ma'lumotlar). Ushbu rejimda server tomonidan o'rnatilgan AD bayrog'i res_search() kabi funksiyalarni chaqiruvchi ilovalar uchun mavjud bo'ladi. Odatiy bo'lib, agar tavsiya etilgan parametrlar o'rnatilmagan bo'lsa, glibc so'rovlarda AD bayrog'ini ko'rsatmaydi va javoblarda uni avtomatik ravishda o'chirib tashlaydi, bu DNSSEC tekshiruvlari etishmayotganligini ko'rsatadi;
  • Glibc uchun ishchi tizim qo'ng'iroqlarini yaratish endi Linux yadrosi sarlavhalari fayllarini o'rnatishni talab qilmaydi. Istisno - 64-bitli RISC-V arxitekturasi;
  • Yo'q qilingan zaiflik CVE-2019-19126, bu sizga himoyani chetlab o'tish imkonini beradi
    Setuid bayrog'i bo'lgan dasturlarda ASLR va LD_PREFER_MAP_32BIT_EXEC muhit o'zgaruvchisini manipulyatsiya qilish orqali yuklangan kutubxonalarda manzillar tartibini aniqlang.

Moslikni buzadigan o'zgarishlar:

  • totalorder(), totalordermag() va boshqa suzuvchi nuqta turlari uchun shunga o'xshash funktsiyalar endi qiymatlarni holatga o'tkazish haqidagi ogohlantirishlarni bartaraf qilish uchun ko'rsatkichlarni argument sifatida qabul qiladi. Nan, kelajakdagi C18661X standarti uchun taklif qilingan TS 1-2 tavsiyalariga muvofiq.
    Suzuvchi nuqta argumentlarini to'g'ridan-to'g'ri uzatuvchi mavjud bajariladigan fayllar o'zgartirishlarsiz ishlashda davom etadi;

  • Uzoq vaqtdan beri eskirgan stime funksiyasi endi glibc bilan bog'langan ikkilik fayllar uchun mavjud emas va uning ta'rifi time.h dan olib tashlandi. Tizim vaqtini belgilash uchun clock_settime funksiyasidan foydalaning. Kelajakda biz eskirgan ftime funksiyasini, shuningdek, sys/timeb.h sarlavha faylini olib tashlashni rejalashtirmoqdamiz (ftime o'rniga gettimeofday yoki clock_gettime ishlatilishi kerak);
  • Gettimeofday funksiyasi endi butun tizim vaqt mintaqasi haqidagi ma'lumotlarni uzatmaydi (bu xususiyat 4.2-BSD davrida tegishli edi va ko'p yillar davomida eskirgan). "Tzp" argumenti endi null ko'rsatgichga o'tkazilishi kerak va localtime() funksiyasi joriy vaqtga asoslangan vaqt mintaqasi ma'lumotlarini olish uchun ishlatilishi kerak. Gettimeofday ga nolga teng bo'lmagan "tzp" argumenti bilan qo'ng'iroq qilish vaqt mintaqasi tuzilishidagi bo'sh tz_minuteswest va tz_dsttime maydonlarini qaytaradi. gettimeofday funksiyasining o'zi POSIX ostida eskirgan (gettimeofday o'rniga clock_gettime tavsiya etiladi), lekin uni glibc'dan olib tashlash rejalari yo'q;
  • settimeofday endi vaqtni va vaqtni to'g'rilash ofsetini o'rnatish uchun parametrlarni bir vaqtning o'zida o'tkazishni qo'llab-quvvatlamaydi. settimeofday chaqirilganda, argumentlardan biri (vaqt yoki ofset) endi nullga o'rnatilishi kerak, aks holda funksiya chaqiruvi EINVAL xatosi bilan muvaffaqiyatsiz bo'ladi. Gettimeofday kabi, settimeofday funksiyasi POSIX tomonidan eskirgan va uni clock_settime funksiyasi yoki adjtime funksiyalar oilasi bilan almashtirish tavsiya etiladi;
  • SPARC ISA v7 arxitekturasini qo‘llab-quvvatlash to‘xtatildi (v8-ni qo‘llab-quvvatlash hozircha saqlanib qolgan, lekin faqat SuperSPARC protsessorlari emas, balki LEON protsessorlari kabi CAS ko‘rsatmalarini qo‘llab-quvvatlaydigan protsessorlar uchun).
  • Agar ulanish "da bajarilmasadangasa", bunda bog'lovchi ushbu funktsiyaga birinchi qo'ng'iroq qilingunga qadar funksiya belgilarini qidirmaydi, dlopen funktsiyasi endi jarayonni tugatishga majbur qiladi (ilgari muvaffaqiyatsizlikka uchraganida NULLni qaytaradi);
  • MIPS qattiq suzuvchi ABI uchun endi bajariladigan stek foydalaniladi, agar tuzilish Linux yadrosi 4.8+dan foydalanishni “-enable-kernel=4.8.0” parametri orqali aniq cheklamasa (yadrolari 4.8 gacha boʻlsa, buzilishlar sodir boʻladi) ba'zi MIPS konfiguratsiyalari uchun kuzatilgan);
  • Vaqtni boshqarish bilan bog'liq tizim qo'ng'iroqlari atrofidagi bog'lanishlar, agar mavjud bo'lsa, time64 tizim chaqiruvidan foydalanishga ko'chirildi (32 bitli tizimlarda glibc birinchi navbatda 64 bitli vaqt turini boshqaradigan yangi tizim qo'ng'iroqlarini sinab ko'radi va agar mavjud bo'lmasa, tushadi. eski 32-bitli qo'ng'iroqlarga qaytish).

Manba: opennet.ru

a Izoh qo'shish