În kernel-ul Linux 5.18 se preconizează autorizarea utilizării standardului de limbaj C C11

În cadrul discuțiilor despre un set de patch-uri pentru corectarea problemelor legate de vulnerabilitățile de tip Spectre în codul pentru gestionarea listelor înlănțuite, a devenit clar că problema ar putea fi rezolvată mai elegant dacă în nucleu ar fi permis codul în limbajul C, conform unei versiuni mai noi a standardului. În prezent, codul adăugat în nucleu trebuie să respecte specificațiile ANSI C (C89), formulate încă din 1989.

Problema legată de Spectre în cod a fost cauzată de continuarea utilizării unui iterator definit separat după buclă — pentru parcurgerea elementelor din lista înlănțuită este utilizat un macro, iar deoarece iteratorul buclei este transmis acestui macro, acesta este definit în afara buclei și rămâne accesibil după încheierea buclei. Utilizarea standardului C99 ar permite definirea variabilelor pentru buclă în blocul for(), ceea ce ar rezolva problema fără a inventa soluții ocolitoare.

Linus Torvalds a fost de acord cu ideea de a implementa suport pentru specificații mai noi și a propus în nucleul 5.18 trecerea la utilizarea standardului C11, publicat în 2011. La verificarea preliminară, compilarea în GCC și Clang în noul mod a trecut fără obiecții. Dacă la testarea mai amănunțită nu apar probleme neprevăzute, în scripturile de compilare pentru nucleul 5.18 opțiunea ‘—std=gnu89’ va fi înlocuită cu ‘—std=gnu11 -Wno-shift-negative-value’. A fost luată în considerare și utilizarea standardului C17, dar în acest caz ar fi fost necesară creșterea versiunii minime suportate de GCC. Totuși, includerea suportului pentru C11 se încadrează în cerințele actuale pentru versiunea GCC (5.1).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster