bzero(3) | Library Functions Manual | bzero(3) |
bzero, explicit_bzero - aduce la zero un șir de octeți
Biblioteca C standard (libc, -lc)
#include <strings.h>
void bzero(void s[.n], size_t n);
#include <string.h>
void explicit_bzero(void s[.n], size_t n);
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ă”.
Niciuna.
explicit_bzero() a apărut pentru prima dată în glibc 2.25.
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare |
bzero(), explicit_bzero() | Siguranța firelor | MT-Safe |
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().
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:
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”.
bstring(3), memset(3), swab(3)
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 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.
5 februarie 2023 | Pagini de manual de Linux 6.03 |