Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

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

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #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.

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

       Niciuna.

ISTORIC

       explicit_bzero()
              glibc 2.25.

              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().

       bzero()
              4.3BSD.

              Marcată ca fiind învechită „LEGACY” în POSIX.1-2001.  Eliminată în POSIX.1-2008.

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   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 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.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                         bzero(3)