Lansering av systembiblioteket Glibc 2.31

Etter seks mÄneders utvikling publisert utgivelse av systembiblioteket GNU C Library (glibc) 2.31, som fullt ut oppfyller kravene i standardene ISO C11 og POSIX.1-2008. Den nye utgaven inkluderer rettelser fra 58 utviklere.

Fra funksjoner implementert i Glibc 2.31 forbedringer kan nevnes:

  • Lagt til makro _ISOC2X_SOURCE for Ă„ aktivere funksjonalitet definert i utkastet til den fremtidige ISO-standarden C2X. Denne funksjonaliteten aktiveres ogsĂ„ ved bruk av makroen _GNU_SOURCE eller ved bygging med gcc med flagget «-std=gnu2x»;
  • For funksjoner definert i header-filen «math.h» som runder av resultater til en mindre datatype, er det foreslĂ„tt passende generiske makroer i filen «tgmath.h», som krevd av spesifikasjonene TS 18661-1:2014 og TS 18661-3:2015;
  • Lagt til funksjonen pthread_clockjoin_np(), som venter pĂ„ at en trĂ„d skal fullfĂžres med hensyn til en tidsgrense (hvis tidsgrensen utlĂžper fĂžr fullfĂžring, vil funksjonen returnere en feil). I motsetning til pthread_timedjoin_np(), tillater pthread_clockjoin_np() spesifikasjon av timer type for beregning av tidsgrensen — CLOCK_MONOTONIC (tar hensyn til tiden systemet har vĂŠrt i hvilemodus) eller CLOCK_REALTIME;
  • I DNS-resolveren er stĂžtte for trust-ad alternativet lagt til i /etc/resolv.conf og flagget RES_TRUSTAD i _res.options, som, nĂ„r aktivert, gjĂžr at DNSSEC-flagget overfĂžres i DNS-forespĂžrslene AD (authenticated data). I denne modusen blir den AD-flagget som er satt av serveren, tilgjengelig for applikasjoner som kaller funksjoner som ligner pĂ„ res_search(). Som standard, dersom de foreslĂ„tte alternativene ikke er aktivert, angir glibc ikke AD-flagget i forespĂžrslene og fjerner det automatisk i svarene, noe som indikerer at DNSSEC verifikasjon ikke har blitt utfĂžrt;
  • For Ă„ bygge fungerende systemanrop wrappers for Glibc er det nĂ„ ikke nĂždvendig Ă„ installere Linux kernel header-filer. Det eneste unntaket er 64-bits arkitektur RISC-V;
  • Fikset sĂ„rbarhet CVE-2019-19126, som gjĂžr det mulig Ă„ omgĂ„ beskyttelsen
    ASLR i programmer med setuid-flagg og bestemme adressefordelingen i lastede biblioteker ved manipulasjon av miljĂžvariabelen LD_PREFER_MAP_32BIT_EXEC.

Endringer som bryter bakoverkompatibilitet:

  • I totalorder(), totalordermag() og lignende funksjoner for andre flyttalls typer, aksepterer nĂ„ pekere som argument for Ă„ unngĂ„ varsler om konvertering av verdier til tilstanden NaN, i samsvar med anbefalingene i TS 18661-1, foreslĂ„tt for den fremtidige standarden C2X.
    Eksisterende kjĂžrbare filer, der flyttallsargumenter sendes direkte, vil fortsette Ă„ fungere uten endringer;
  • Den lenge annonserte utdaterte funksjonen stime er nĂ„ utilgjengelig for binĂŠrfiler knyttet til glibc, og dens definisjon er fjernet fra time.h. For Ă„ sette systemtiden, bĂžr funksjonen clock_settime brukes. I fremtiden planlegges det Ă„ fjerne den ogsĂ„ utdaterte funksjonen ftime, samt header-filen sys/timeb.h (i stedet for ftime bĂžr gettimeofday eller clock_gettime brukes);
  • Funksjonen gettimeofday overfĂžrer nĂ„ ikke lenger informasjon om det generelle systemets tidssone (denne muligheten var relevant pĂ„ 4.2-BSD og har vĂŠrt erklĂŠrt utdaterte i mange Ă„r). I argumentet 'tzp' bĂžr det nĂ„ sendes en nullpeker, og for Ă„ fĂ„ opplysninger om tidssonen knyttet til den nĂ„vĂŠrende tiden, bĂžr funksjonen localtime() brukes. NĂ„r gettimeofday kalles med et ikke-null argument 'tzp', vil tomme felt tz_minuteswest og tz_dsttime bli returnert i strukturen timezone. Funksjonen gettimeofday anses ogsĂ„ som utdaterte i POSIX (det anbefales Ă„ bruke clock_gettime i stedet for gettimeofday), men den vil ikke bli fjernet fra glibc;
  • I settimeofday er stĂžtten for samtidig overfĂžring av parametere for Ă„ sette tid og korrektiv tidsforskyvning avsluttet. NĂ„r settimeofday kalles, mĂ„ ett av argumentene (tid eller forskyvning) nĂ„ nĂždvendigvis settes til null, ellers vil funksjonskallet avsluttes med feilmeldingen EINVAL. Akkurat som gettimeofday, anses funksjonen settimeofday for utdaterte i POSIX, og det anbefales Ă„ bruke funksjonen clock_settime eller funksjonsfamilien adjtime i stedet;
  • StĂžtten for arkitekturen SPARC ISA v7 er avsluttet (stĂžtten for v8 er fortsatt bevart, men bare for prosessorer med stĂžtte for CAS-instruksjoner, som LEON-prosessorer, men ikke SuperSPARC-prosessorer).
  • I tilfelle avbinding mislykkes i «lazy« modus, der linker ikke sĂžker etter funksjonssymboler fĂžr fĂžrste kall til denne funksjonen, vil funksjonen dlopen nĂ„ tvinge prosessen til Ă„ avslutte (tidligere ble NULL returnert ved feil);
  • For ABI MIPS hard-float, brukes nĂ„ en kjĂžrende stakk, med mindre det er spesifisert en begrensning for bruken av Linux-kjernen 4.8+ under bygging gjennom parameteren «--enable-kernel=4.8.0» (med kerner opp til 4.8, observeres det krasj for noen MIPS-konfigurasjoner);
  • Binde over systemkall relatert til tidsmanipulering er oversatt til bruk av systemkallet time64, nĂ„r det er tilgjengelig (pĂ„ 32-biters systemer prĂžver glibc fĂžrst Ă„ bruke de nye systemkallene som manipulerer 64-biters tidstype, og hvis de ikke er tilstede, faller det tilbake til de gamle 32-biters kallene).

Kilde: opennet.ru

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster