Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       bzero, explicit_bzero - aduce la zero un șir de octeți

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <strings.h>

       void bzero(void s[.n], size_t n);

       #include <string.h>

       void explicit_bzero(void s[.n], size_t n);

DESCRIERE

       Funcția  bzero() șterge datele din n octeți ai memoriei începând de la locația indicată de
       s, prin scrierea de zerouri (octeți care conțin '\0') în zona respectivă.

       Funcția explicit_bzero() îndeplinește aceeași sarcină ca și bzero(). Ea diferă de  bzero()
       prin  faptul  că  garantează  că  optimizările  compilatorului  nu vor elimina operația de
       ștergere dacă compilatorul deduce că operația „nu este necesară”.

VALOAREA RETURNATĂ

       Niciuna.

VERSIUNI

       explicit_bzero() a apărut pentru prima dată în glibc 2.25.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │bzero(), explicit_bzero()                                  │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       Funcția bzero() este depreciată (marcată ca LEGACY în POSIX.1-2001);  utilizați  memset(3)
       în  programele noi.  POSIX.1-2008 elimină specificația funcției bzero(). Funcția bzero() a
       apărut pentru prima dată în 4.3BSD.

       Funcția explicit_bzero() este o extensie nestandardizată care este prezentă  și  pe  unele
       BSD-uri.  Unele  alte  implementări au o funcție similară, cum ar fi memset_explicit() sau
       memset_s().

NOTE

       Funcția  explicit_bzero()  rezolvă  o  problemă  cu  care  se  pot  confrunta  aplicațiile
       preocupate  de  securitate atunci când folosesc bzero(): dacă compilatorul poate deduce că
       locația care urmează să fie pusă la zero nu va mai  fi  niciodată  atinsă  de  un  program
       corect, atunci poate elimina complet apelul bzero(). Aceasta este o problemă dacă intenția
       apelului bzero() a fost de a șterge date sensibile (de exemplu, parole) pentru  a  preveni
       posibilitatea  ca  datele să fie divulgate de un program incorect sau compromis. Apelurile
       la explicit_bzero() nu sunt niciodată optimizate de compilator.

       Funcția explicit_bzero()  nu  rezolvă  toate  problemele  asociate  cu  ștergerea  datelor
       sensibile:

       •  Funcția  explicit_bzero()  nu  garantează  că  datele sensibile sunt șterse complet din
          memorie; (același lucru este valabil și pentru bzero()). De exemplu, pot  exista  copii
          ale  datelor  sensibile  într-un  registru  și  în  zonele  de stivă „scratch”. Funcția
          explicit_bzero() nu este conștientă de aceste copii și nu le poate șterge.

       •  În anumite circumstanțe, explicit_bzero() poate diminua securitatea. În cazul  în  care
          compilatorul  a  determinat  că  variabila  care  conține  datele  sensibile  poate  fi
          optimizată pentru a fi stocată într-un registru (deoarece este suficient de mică pentru
          a  încăpea  într-un registru și nicio altă operație în afară de apelul explicit_bzero()
          nu ar trebui să ia adresa variabilei), atunci apelul explicit_bzero() va  forța  datele
          să  fie  copiate din registru într-o locație din RAM care este apoi ștearsă imediat (în
          timp ce copia din registru rămâne neafectată). Problema aici este  că  datele  din  RAM
          sunt  mai  susceptibile  de  a fi expuse de o eroare decât datele dintr-un registru și,
          astfel, apelul explicit_bzero() creează o scurtă  fereastră  de  timp  în  care  datele
          sensibile sunt mai vulnerabile decât ar fi fost dacă nu s-ar fi încercat ștergerea lor.

       Rețineți   că  declararea  variabilei  sensibile  cu  calificativul  volatile  nu  elimină
       problemele de mai sus. Într-adevăr, le va înrăutăți, deoarece, de exemplu, poate  forța  o
       variabilă care altfel ar fi fost optimizată într-un registru să fie menținută în schimb în
       RAM (mai vulnerabilă) pe toată durata sa de viață.

       Fără a aduce atingere  detaliilor  de  mai  sus,  pentru  aplicațiile  care  țin  cont  de
       securitate,   utilizarea   explicit_bzero()   este,   în  general,  preferabilă  în  locul
       neutilizării sale. Dezvoltatorii explicit_bzero() anticipează că  viitoarele  compilatoare
       vor  recunoaște  apelurile  la  explicit_bzero()  și vor lua măsuri pentru a se asigura că
       toate copiile datelor sensibile sunt șterse, inclusiv copiile din registre sau din  zonele
       de stivă „scratch”.

CONSULTAȚI ȘI

       bstring(3), memset(3), swab(3)

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  de Remus-Gabriel Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară cu
       privire la condiții privind drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui  manual,  vă  rugăm  să  trimiteți  un  e-mail  la
       ⟨translation-team-ro@lists.sourceforge.net⟩.