bzero(3) Library Functions Manual bzero(3) NUME bzero, explicit_bzero - aduce la zero un ir de octei BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include void bzero(void s[.n], size_t n); #include void explicit_bzero(void s[.n], size_t n); DESCRIERE Funcia bzero() terge datele din n octei ai memoriei incepand de la locaia indicata de s, prin scrierea de zerouri (octei care conin '\0') in zona respectiva. Funcia explicit_bzero() indeplinete aceeai sarcina ca i bzero(). Ea difera de bzero() prin faptul ca garanteaza ca optimizarile compilatorului nu vor elimina operaia de tergere daca compilatorul deduce ca operaia ,,nu este necesara". VALOAREA RETURNATA Niciuna. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |bzero(), explicit_bzero() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE Niciuna. ISTORIC explicit_bzero() glibc 2.25. Funcia explicit_bzero() este o extensie nestandardizata care este prezenta i pe unele BSD-uri. Unele alte implementari au o funcie similara, cum ar fi memset_explicit() sau memset_s(). bzero() 4.3BSD. Marcata ca fiind invechita ,,LEGACY" in POSIX.1-2001. Eliminata in POSIX.1-2008. NOTE Funcia explicit_bzero() rezolva o problema cu care se pot confrunta aplicaiile preocupate de securitate atunci cand folosesc bzero(): daca compilatorul poate deduce ca locaia care urmeaza sa fie pusa la zero nu va mai fi niciodata atinsa de un program corect, atunci poate elimina complet apelul bzero(). Aceasta este o problema daca intenia apelului bzero() a fost de a terge date sensibile (de exemplu, parole) pentru a preveni posibilitatea ca datele sa fie divulgate de un program incorect sau compromis. Apelurile la explicit_bzero() nu sunt niciodata optimizate de compilator. Funcia explicit_bzero() nu rezolva toate problemele asociate cu tergerea datelor sensibile: o Funcia explicit_bzero() nu garanteaza ca datele sensibile sunt terse complet din memorie; (acelai lucru este valabil i pentru bzero()). De exemplu, pot exista copii ale datelor sensibile intr-un registru i in zonele de stiva ,,scratch". Funcia explicit_bzero() nu este contienta de aceste copii i nu le poate terge. o In anumite circumstane, explicit_bzero() poate diminua securitatea. In cazul in care compilatorul a determinat ca variabila care conine datele sensibile poate fi optimizata pentru a fi stocata intr-un registru (deoarece este suficient de mica pentru a incapea intr-un registru i nicio alta operaie in afara de apelul explicit_bzero() nu ar trebui sa ia adresa variabilei), atunci apelul explicit_bzero() va fora datele sa fie copiate din registru intr-o locaie din RAM care este apoi tearsa imediat (in timp ce copia din registru ramane neafectata). Problema aici este ca datele din RAM sunt mai susceptibile de a fi expuse de o eroare decat datele dintr-un registru i, astfel, apelul explicit_bzero() creeaza o scurta fereastra de timp in care datele sensibile sunt mai vulnerabile decat ar fi fost daca nu s-ar fi incercat tergerea lor. Reinei ca declararea variabilei sensibile cu calificativul volatile nu elimina problemele de mai sus. Intr-adevar, le va inrautai, deoarece, de exemplu, poate fora o variabila care altfel ar fi fost optimizata intr-un registru sa fie meninuta in schimb in RAM (mai vulnerabila) pe toata durata sa de viaa. Fara a aduce atingere detaliilor de mai sus, pentru aplicaiile care in cont de securitate, utilizarea explicit_bzero() este, in general, preferabila in locul neutilizarii sale. Dezvoltatorii explicit_bzero() anticipeaza ca viitoarele compilatoare vor recunoate apelurile la explicit_bzero() i vor lua masuri pentru a se asigura ca toate copiile datelor sensibile sunt terse, inclusiv copiile din registre sau din zonele de stiva ,,scratch". CONSULTAI I bstring(3), memset(3), swab(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 bzero(3)