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

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

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

  • Ирээдүйн 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 талбаруудыг буцаана. 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

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