.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (C) 2017 Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH bzero 3 "5 fevereiro 2023" "Linux man\-pages 6.03" 
.SH NOME
bzero, explicit_bzero \- zera uma string de bytes
.SH BIBLIOTECA
Biblioteca C Padrão (\fIlibc\fP, \fI\-lc\fP)
.SH SINOPSE
.nf
\fB#include <strings.h>\fP
.PP
\fBvoid bzero(void \fP\fIs\fP\fB[.\fP\fIn\fP\fB], size_t \fP\fIn\fP\fB);\fP
.PP
\fB#include <string.h>\fP
.PP
\fBvoid explicit_bzero(void \fP\fIs\fP\fB[.\fP\fIn\fP\fB], size_t \fP\fIn\fP\fB);\fP
.fi
.SH DESCRIÇÃO
A função \fBbzero\fP() apaga os dados nos \fIn\fP bytes do início da memória no
local apontado por \fIs\fP, escrevendo zeros (bytes contendo \[aq]\e0\[aq])
naquela área.
.PP
A função \fBexplicit_bzero\fP() realiza a mesma tarefa que \fBbzero\fP(). A
diferença para \fBbzero\fP() é 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".
.SH "VALOR DE RETORNO"
Nenhum.
.SH VERSÕES
\fBexplicit_bzero\fP() apareceu pela primeira vez no glibc 2.25.
.SH ATRIBUTOS
Para uma explicação dos termos usados nesta seção, consulte
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Atributo	Valor
T{
\fBbzero\fP(),
\fBexplicit_bzero\fP()
T}	Thread safety	MT\-Safe
.TE
.hy
.ad
.sp 1
.SH PADRÕES
A função \fBbzero\fP() foi descontinuada (marcada como LEGACY em POSIX.1\-2001);
use \fBmemset\fP(3) em programas novos. POSIX.1\-2008 remove a especificação de
\fBbzero\fP(). A função \fBbzero\fP() apareceu pela primeira vez em 4.3BSD.
.PP
A função \fBexplicit_bzero\fP() é uma extensão não padrão que é apresentada em
alguns BSDs. Outras implementações possuem uma função similar, como
\fBmemset_explicit\fP() ou \fBmemset_s\fP().
.SH NOTAS
A função \fBexplicit_bzero\fP() resolve um problema que aplicativos preocupados
com segurança podem encontrar ao usar \fBbzero\fP(): se o compilador puder
deduzir que o local a ser zerado nunca mais será tocado por um programa
\fIcorreto\fP, poderá remover a chamada \fBbzero\fP() por completo. Esse é um
problema se a intenção da chamada \fBbzero\fP() era apagar dados confidenciais
(por exemplo, senhas) para evitar a possibilidade de os dados vazarem por um
programa incorreto ou comprometido. As chamadas para \fBexplicit_bzero\fP()
nunca são otimizadas pelo compilador.
.PP
A função \fBexplicit_bzero\fP() não resolve todos os problemas associados com
apagar dados sensíveis:
.IP \[bu] 3
A função \fBexplicit_bzero\fP() \fInão\fP garante que os dados confidenciais sejam
completamente apagados da memória. (O mesmo acontece com \fBbzero\fP().) Por
exemplo, pode haver cópias dos dados confidenciais em um registro e em áreas
de pilhas "scratch". A função \fBexplicit_bzero\fP() não está ciente dessas
cópias e não pode apagá\-las.
.IP \[bu]
Em algumas circunstâncias, \fBexplicit_bzero\fP() posso \fIdiminuir\fP a
segurança. Se o compilador determinou que a variável que contém os dados
confidenciais poderia ser otimizada para ser armazenada em um registro
(porque ela é pequena o suficiente para caber em um registro, e nenhuma
operação além da chamada \fBexplicit_bzero\fP() precisaria executar o comando
endereço da variável), a chamada de \fBexplicit_bzero\fP() força os dados a
serem copiados do registro para um local na RAM que é imediatamente apagado
(enquanto a cópia no registro permanece inalterada). O problema aqui é que é
mais provável que os dados na RAM sejam expostos por um bug do que os dados
em um registro e, portanto, a chamada \fBexplicit_bzero\fP() cria uma breve
janela de tempo em que os dados confidenciais são mais vulneráveis do que
seriam. se nenhuma tentativa tivesse sido feita para apagar os dados.
.PP
Observe que declarar a variável sensível com o qualificador \fBvolatile\fP
\fInão\fP 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.
.PP
Não obstante os detalhes acima, para aplicativos preocupados com a
segurança, usar \fBexplicit_bzero\fP() em vez de não usá\-lo é geralmente
preferível. Os desenvolvedores do \fBexplicit_bzero\fP() antecipam que futuros
compiladores reconheçam chamadas a \fBexplicit_bzero\fP() 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".
.SH "VEJA TAMBÉM"
\fBbstring\fP(3), \fBmemset\fP(3), \fBswab\fP(3)
.PP
.SH TRADUÇÃO
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>.
.
.PP
Esta tradução é uma documentação livre; leia a
.UR https://www.gnu.org/licenses/gpl-3.0.html
Licença Pública Geral GNU Versão 3 
.UE
ou posterior para as condições de direitos autorais.
Nenhuma responsabilidade é aceita.
.PP
Se você encontrar algum erro na tradução desta página de manual,
envie um e-mail para
.MT debian-l10n-portuguese@lists.debian.org
a lista de discussão de tradutores
.ME .