Glibc 2.31 Системалык китепкананын чыгарылышы

алты айдан кийин иштеп чыгуу жарыяланган системалык китепкана чыгаруу GNU C китепканасы (glibc) 2.31, ал толугу менен ISO C11 жана POSIX.1-2008 стандарттарынын талаптарына жооп берет. Жаңы релиз 58 иштеп чыгуучунун оңдоолорун камтыйт.

Glibc 2.31де ишке ашырылгандардан жакшыртуулар сиз белгилей аласыз:

  • Келечектеги ISO стандартынын долбоорунда аныкталган мүмкүнчүлүктөрдү иштетүү үчүн _ISOC2X_SOURCE макроосу кошулду C2X. Бул функциялар _GNU_SOURCE макросун колдонууда же "-std=gnu2x" желеги менен gccде курууда да иштетилет;
  • Натыйжаларын кичине түргө тегерете турган "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 үчүн жумушчу тутумдук чалууларды түзүү мындан ары Linux ядросунун баш файлдарын орнотууну талап кылбайт. 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 ордуна саат_gettime сунушталат), бирок аны glibcден алып салуу пландары жок;
  • settimeofday мындан ары убакытты жана убакытты оңдоп-түзөөчү офсетти орнотуу үчүн параметрлерди бир убакта өткөрүүнү колдобойт. settimeofday чакырганда, аргументтердин бири (убакыт же офсет) эми нөлгө коюлушу керек, антпесе функция чалуу EINVAL катасы менен ишке ашпай калат. gettimeofday сыяктуу, settimeofday функциясы POSIXте эскирилген жана clock_settime функциясы же adjtime функциялардын үй-бүлөсү менен алмаштыруу сунушталат;
  • SPARC ISA v7 архитектурасын колдоо токтотулду (v8 колдоосу азырынча сакталып турат, бирок SuperSPARC процессорлору эмес, LEON процессорлору сыяктуу CAS нускамаларын колдогон процессорлор үчүн гана).
  • Эгерде жупташтыруу "жалкоо", анда шилтеме берүүчү функциянын символдорун ошол функцияга биринчи чакырууга чейин издебейт, dlopen функциясы эми процессти токтотууга мажбурлайт (мурда ийгиликсиз болгондо NULL кайтарып турган);
  • MIPS катуу калкып жүрүүчү ABI үчүн, эгер түзүлүү Linux ядросун 4.8+ колдонууну “-enable-kernel=4.8.0” параметри аркылуу ачык эле чектебесе, азыр аткарылуучу стек колдонулат (өзөктөрү 4.8ге чейин, каталар кээ бир MIPS конфигурациялары үчүн байкалган);
  • Убакытты манипуляциялоого байланыштуу тутумдук чалуулардын айланасындагы байланыштар, эгер бар болсо, time64 тутум чалуусун колдонууга жылдырылды (32 биттик системаларда, glibc адегенде 64 биттик убакыт түрүн башкарган жаңы системалык чалууларды сынайт, ал эми жок болсо, түшөт. эски 32 биттик чалууларга кайтуу).

Source: opennet.ru

Комментарий кошуу