Provided by: manpages-es-dev_4.21.0-2_all bug

NOMBRE

       bzero explicit_bzero - escribe bytes cero

BIBLIOTECA

       Biblioteca Estándar C (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);

DESCRIPCIÓN

       The bzero()  function erases the data in the n bytes of the memory starting at the location pointed to by
       s, by writing zeros (bytes containing '\0') to that area.

       The  explicit_bzero()   function  performs the same task as bzero().  It differs from bzero()  in that it
       guarantees that compiler optimizations will not remove the erase operation if the compiler  deduces  that
       the operation is "unnecessary".

VALOR DEVUELTO

       Ninguna.

VERSIONES

       explicit_bzero() apareció por primera vez en la versión 2.25 de glibc.

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
       ┌──────────────────────────────────────────────────────────────┬────────────────────┬───────────────────┐
       │ InterfazAtributoValor             │
       ├──────────────────────────────────────────────────────────────┼────────────────────┼───────────────────┤
       │ bzero(), explicit_bzero()                                    │ Seguridad del hilo │ Multi-hilo seguro │
       └──────────────────────────────────────────────────────────────┴────────────────────┴───────────────────┘

ESTÁNDARES

       The  bzero()   function is deprecated (marked as LEGACY in POSIX.1-2001); use memset(3)  in new programs.
       POSIX.1-2008 removes the specification of bzero().  The bzero()  function first appeared in 4.3BSD.

       La  función  explicit_bzero()  es  una  extensión  no  estándar  presente  también  algunos  BSD.   Otras
       implementaciones incluyen funciones similares tales como memset_explicit() o memset_s().

NOTAS

       The explicit_bzero()  function addresses a problem that security-conscious applications may run into when
       using bzero(): if the compiler can deduce that the location to be zeroed will never again be touched by a
       correct program, then it may remove the bzero()  call altogether.  This is a problem if the intent of the
       bzero()  call was to erase sensitive data (e.g., passwords)  to prevent the possibility that the data was
       leaked  by  an  incorrect or compromised program.  Calls to explicit_bzero()  are never optimized away by
       the compiler.

       La función explicit_bzero() no resuelve todos los problemas relacionados con el  borrado  de  información
       sensible:

       •  The  explicit_bzero()   function  does  not  guarantee  that  sensitive data is completely erased from
          memory.  (The same is true of bzero().)  For example, there may be copies of the sensitive data  in  a
          register  and  in "scratch" stack areas.  The explicit_bzero()  function is not aware of these copies,
          and can't erase them.

       •  In some circumstances, explicit_bzero()  can decrease security.  If the compiler determined  that  the
          variable  containing  the  sensitive data could be optimized to be stored in a register (because it is
          small enough to fit in a register, and no operation other than the explicit_bzero()  call  would  need
          to take the address of the variable), then the explicit_bzero()  call will force the data to be copied
          from the register to a location in RAM that is then immediately erased (while the copy in the register
          remains  unaffected).  The problem here is that data in RAM is more likely to be exposed by a bug than
          data in a register, and thus the  explicit_bzero()   call  creates  a  brief  time  window  where  the
          sensitive  data  is  more  vulnerable than it would otherwise have been if no attempt had been made to
          erase the data.

       Note that declaring the sensitive variable with the volatile  qualifier  does  not  eliminate  the  above
       problems.   Indeed,  it  will  make  them  worse,  since, for example, it may force a variable that would
       otherwise have been optimized into a register to instead be maintained in (more vulnerable)  RAM for  its
       entire lifetime.

       Notwithstanding  the  above  details,  for  security-conscious  applications,  using explicit_bzero()  is
       generally preferable to not using  it.   The  developers  of  explicit_bzero()   anticipate  that  future
       compilers  will  recognize  calls  to  explicit_bzero()   and take steps to ensure that all copies of the
       sensitive data are erased, including copies in registers or in "scratch" stack areas.

VÉASE TAMBIÉN

       bstring(3), memset(3), swab(3)

TRADUCCIÓN

       La  traducción  al  español  de  esta   página   del   manual   fue   creada   por   Sebastian   Desimone
       <chipy@argenet.com.ar>,  Cesar D. Lobejon <cesar@alien.mec.es>, Miguel Pérez Ibars <mpi79470@alu.um.es> y
       Marcos Fouces <marcos@debian.org>

       Esta traducción es documentación libre;  lea  la  GNU General Public License Version 3  o  posterior  con
       respecto a las condiciones de copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si  encuentra  algún  error  en  la  traducción  de esta página del manual, envíe un correo electrónico a
       debian-l10n-spanish@lists.debian.org.

Páginas de manual de Linux 6.03                  5 Febrero 2023                                         bzero(3)