Glibc 2.31 Системийн номын сангийн хувилбар

Зургаан сарын хөгжлийн дараа нийтэлсэн системийн номын сангийн хувилбар GNU C номын сан (glibc) 2.31, энэ нь ISO C11 болон POSIX.1-2008 стандартын шаардлагыг бүрэн хангасан. Шинэ хувилбарт 58 хөгжүүлэгчийн засварууд багтсан болно.

Glibc 2.30-д хэрэгжүүлсэн сайжруулалт чи тэмдэглэж болно.

  • Ирээдүйн ISO стандартын төсөлд тодорхойлсон чадавхийг идэвхжүүлэхийн тулд _ISOC2X_SOURCE макро нэмсэн. C2X хэмжээтэй. Эдгээр функцууд нь _GNU_SOURCE макро ашиглах эсвэл gcc-д “-std=gnu2x” туг ашиглан бүтээх үед идэвхждэг;
  • "math.h" толгой файлд тодорхойлсон, үр дүнгээ жижиг төрөл болгон дугуйлсан функцүүдийн хувьд TS 18661-1:2014 болон TS-ийн техникийн үзүүлэлтүүдийн дагуу "tgmath.h" файлд харгалзах ерөнхий төрлийн макрог санал болгосон. 18661-3: 2015;
  • pthread_clockjoin_np() функцийг нэмсэн бөгөөд энэ нь урсгалыг дуусгахыг хүлээдэг бөгөөд энэ нь завсарлагааны хугацааг харгалзан үздэг (хэрэв хугацаа дуусахаас өмнө хугацаа дууссан бол функц алдаа гаргах болно). Дургүй pthread_timedjoin_np(), pthread_clockjoin_np()-д хугацаа дуусах хугацааг тооцоолох таймерын төрлийг тодорхойлох боломжтой - CLOCK_MONOTONIC (унтах горимд системд зарцуулсан цагийг харгалзан үздэг) эсвэл CLOCK_REALTIME;
  • DNS шийдүүлэгч нь одоо /etc/resolv.conf доторх итгэмжлэлийн сурталчилгааны сонголт болон _res.options доторх RES_TRUSTAD тугийг дэмждэг ба тохируулагдсан үед DNSSEC тугийг DNS хүсэлтүүдэд дамжуулдаг. AD (баталгаажсан өгөгдөл). Энэ горимд серверийн тохируулсан AD туг нь res_search() гэх мэт функцуудыг дууддаг програмуудад боломжтой болно. Анхдагчаар, хэрэв санал болгож буй сонголтуудыг тохируулаагүй бол glibc нь хүсэлтүүдэд AD тугийг заадаггүй бөгөөд хариу өгөхдөө автоматаар устгадаг бөгөөд энэ нь DNSSEC шалгалт байхгүй байгааг илтгэнэ;
  • Glibc-д зориулсан ажлын системийн дуудлагын холболтыг бий болгоход Линуксийн цөмийн толгой файлуудыг суулгах шаардлагагүй болсон. Үл хамаарах зүйл бол 64 битийн RISC-V архитектур юм;
  • Арилгасан эмзэг байдал CVE-2019-19126, энэ нь хамгаалалтыг тойрч гарах боломжийг олгодог
    Setuid туг бүхий программ дахь ASLR ба LD_PREFER_MAP_32BIT_EXEC орчны хувьсагчийг удирдах замаар ачаалагдсан номын сан дахь хаягийн байршлыг тодорхойлно.

Тохиромжтой байдлыг зөрчсөн өөрчлөлтүүд:

  • totalorder(), totalordermag() болон бусад хөвөгч цэгийн төрлүүдийн ижил төстэй функцууд одоо утгыг төлөвт хувиргах тухай анхааруулгыг арилгахын тулд заагчийг аргумент болгон хүлээн авдаг. НаН, ирээдүйн C18661X стандартад санал болгож буй TS 1-2-ийн зөвлөмжийн дагуу.
    Хөвөгч цэгийн аргументуудыг шууд дамжуулдаг одоо байгаа гүйцэтгэгдэх файлууд ямар ч өөрчлөлтгүйгээр ажилласаар байх болно;

  • Удаан хуучирсан stime функцийг glibc-холбогдсон хоёртын файлуудад ашиглах боломжгүй болсон бөгөөд түүний тодорхойлолтыг time.h-аас хассан. Системийн цагийг тохируулахын тулд clock_settime функцийг ашиглана уу. Цаашид бид хуучирсан ftime функц болон sys/timeb.h толгой файлыг устгахаар төлөвлөж байна (ftime-ын оронд gettimeofday эсвэл clock_gettime ашиглах ёстой);
  • Функция gettimeofday отныне не передаёт сведения о общесистемном часовом поясе (данная возможность была актуальна во времена 4.2-BSD и много лет объявлена устаревшей). В аргументе ‘tzp’ теперь следует передавать нулевой указатель, а для получения сведений о часовом поясе в привязке к текущему времени использовать функцию localtime(). При вызове gettimeofday с ненулевым аргументом ‘tzp’ будут возвращены пустые поля tz_minuteswest и tz_dsttime в структуре timezone. Сама функция gettimeofday считается устаревшей в POSIX (вместо gettimeofday рекомендуется использовать clock_gettime), но удалять её из glibc не планируется;
  • settimeofday нь цаг болон цаг засах офсетийг тохируулах параметрүүдийг нэгэн зэрэг дамжуулахыг дэмжихээ больсон. settimeofday-г дуудах үед аргументуудын аль нэгийг (цаг эсвэл офсет) одоо null гэж тохируулах ёстой, эс тэгвээс функцийн дуудлага EINVAL алдаагаар бүтэлгүйтэх болно. Gettimeofday-ын нэгэн адил settimeofday функцийг POSIX-д хуучирсан бөгөөд clock_settime функц эсвэл adjtime гэр бүлийн функцээр солихыг зөвлөж байна;
  • SPARC ISA v7 архитектурын дэмжлэгийг зогсоосон (v8-ийн дэмжлэг одоохондоо хадгалагдаж байгаа боловч зөвхөн SuperSPARC процессор биш LEON процессор гэх мэт CAS зааварчилгааг дэмждэг процессоруудад зориулагдсан).
  • В случает сбоя связывания в режиме «залхуу", энэ үед холбогч нь тухайн функцийн анхны дуудлагыг хийх хүртэл функцийн тэмдэгтүүдийг хайдаггүй бол dlopen функц нь одоо үйл явцыг дуусгахад хүргэдэг (өмнө нь бүтэлгүйтсэн тохиолдолд NULL буцаадаг);
  • "-enable-kernel=4.8" параметрээр (4.8.0 хүртэлх цөмтэй бол гацалт) Linux цөм 4.8+-ийн хэрэглээг уг бүтэц нь тодорхой хязгаарлаагүй бол MIPS хатуу хөвөгч ABI-ийн хувьд одоо гүйцэтгэх боломжтой стекийг ашиглаж байна. зарим MIPS тохиргоонд ажиглагдсан);
  • Цагийн зохицуулалттай холбоотой системийн дуудлагын эргэн тойронд байгаа холболтуудыг хэрэв байгаа бол time64 системийн дуудлагыг ашиглахаар шилжүүлсэн (32 битийн систем дээр glibc эхлээд 64 битийн цагийн төрлийг удирдах шинэ системийн дуудлагуудыг оролдох ба хэрэв байхгүй бол унана. хуучин 32 битийн дуудлага руу буцах).

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх