bzero(3) | Library Functions Manual | bzero(3) |
bzero, explicit_bzero - zera uma string de bytes
Biblioteca C Padrão (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);
A função bzero() apaga os dados nos n bytes do início da memória no local apontado por s, escrevendo zeros (bytes contendo '\0') naquela área.
A função explicit_bzero() realiza a mesma tarefa que bzero(). A diferença para bzero() é que ela garante que as organizações de compilador não vão remover a operação de apagar se o compilar deduzir que a operação é "desnecessária".
Nenhum.
explicit_bzero() apareceu pela primeira vez no glibc 2.25.
Para uma explicação dos termos usados nesta seção, consulte attributes(7).
Interface | Atributo | Valor |
bzero(), explicit_bzero() | Thread safety | MT-Safe |
A função bzero() foi descontinuada (marcada como LEGACY em POSIX.1-2001); use memset(3) em programas novos. POSIX.1-2008 remove a especificação de bzero(). A função bzero() apareceu pela primeira vez em 4.3BSD.
A função explicit_bzero() é uma extensão não padrão que é apresentada em alguns BSDs. Outras implementações possuem uma função similar, como memset_explicit() ou memset_s().
A função explicit_bzero() resolve um problema que aplicativos preocupados com segurança podem encontrar ao usar bzero(): se o compilador puder deduzir que o local a ser zerado nunca mais será tocado por um programa correto, poderá remover a chamada bzero() por completo. Esse é um problema se a intenção da chamada bzero() era apagar dados confidenciais (por exemplo, senhas) para evitar a possibilidade de os dados vazarem por um programa incorreto ou comprometido. As chamadas para explicit_bzero() nunca são otimizadas pelo compilador.
A função explicit_bzero() não resolve todos os problemas associados com apagar dados sensíveis:
Observe que declarar a variável sensível com o qualificador volatile não não elimina os problemas acima. De fato, isso os tornará piores, pois, por exemplo, pode forçar uma variável que de outra forma seria otimizada em um registro a ser mantida na RAM (mais vulnerável) por toda a sua vida útil.
Não obstante os detalhes acima, para aplicativos preocupados com a segurança, usar explicit_bzero() em vez de não usá-lo é geralmente preferível. Os desenvolvedores do explicit_bzero() antecipam que futuros compiladores reconheçam chamadas a explicit_bzero() e tomem medidas para garantir que todas as cópias dos dados sigilosos sejam apagadas, incluindo cópias em registradores ou em áreas de pilhas "scratch".
A tradução para português brasileiro desta página man foi criada por Paulo César Mendes <drpc@ism.com.br>, André Luiz Fassone <lonely_wolf@ig.com.br> e Rafael Fontenelle <rafaelff@gnome.org>.
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.
5 fevereiro 2023 | Linux man-pages 6.03 |