Blame string/bits/string_fortified.h

Packit Service 82fcde
/* Copyright (C) 2004-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef _BITS_STRING_FORTIFIED_H
Packit Service 82fcde
#define _BITS_STRING_FORTIFIED_H 1
Packit Service 82fcde
Packit Service 82fcde
#ifndef _STRING_H
Packit Service 82fcde
# error "Never use <bits/string_fortified.h> directly; include <string.h> instead."
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#if !__GNUC_PREREQ (5,0)
Packit Service 82fcde
__warndecl (__warn_memset_zero_len,
Packit Service 82fcde
	    "memset used with constant zero length parameter; this could be due to transposed parameters");
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
__fortify_function void *
Packit Service 82fcde
__NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
Packit Service 82fcde
	       size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
__fortify_function void *
Packit Service 82fcde
__NTH (memmove (void *__dest, const void *__src, size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
__fortify_function void *
Packit Service 82fcde
__NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
Packit Service 82fcde
		size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* The first two tests here help to catch a somewhat common problem
Packit Service 82fcde
   where the second and third parameter are transposed.  This is
Packit Service 82fcde
   especially problematic if the intended fill value is zero.  In this
Packit Service 82fcde
   case no work is done at all.  We detect these problems by referring
Packit Service 82fcde
   non-existing functions.  */
Packit Service 82fcde
__fortify_function void *
Packit Service 82fcde
__NTH (memset (void *__dest, int __ch, size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  /* GCC-5.0 and newer implements these checks in the compiler, so we don't
Packit Service 82fcde
     need them here.  */
Packit Service 82fcde
#if !__GNUC_PREREQ (5,0)
Packit Service 82fcde
  if (__builtin_constant_p (__len) && __len == 0
Packit Service 82fcde
      && (!__builtin_constant_p (__ch) || __ch != 0))
Packit Service 82fcde
    {
Packit Service 82fcde
      __warn_memset_zero_len ();
Packit Service 82fcde
      return __dest;
Packit Service 82fcde
    }
Packit Service 82fcde
#endif
Packit Service 82fcde
  return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_MISC
Packit Service 82fcde
# include <bits/strings_fortified.h>
Packit Service 82fcde
Packit Service 82fcde
void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen)
Packit Service 82fcde
  __THROW __nonnull ((1));
Packit Service 82fcde
Packit Service 82fcde
__fortify_function void
Packit Service 82fcde
__NTH (explicit_bzero (void *__dest, size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  __explicit_bzero_chk (__dest, __len, __bos0 (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (strcpy (char *__restrict __dest, const char *__restrict __src))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (stpcpy (char *__restrict __dest, const char *__restrict __src))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
Packit Service 82fcde
		size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
/* XXX We have no corresponding builtin yet.  */
Packit Service 82fcde
extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,
Packit Service 82fcde
			    size_t __destlen) __THROW;
Packit Service 82fcde
extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
Packit Service 82fcde
					       size_t __n), stpncpy);
Packit Service 82fcde
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (stpncpy (char *__dest, const char *__src, size_t __n))
Packit Service 82fcde
{
Packit Service 82fcde
  if (__bos (__dest) != (size_t) -1
Packit Service 82fcde
      && (!__builtin_constant_p (__n) || __n > __bos (__dest)))
Packit Service 82fcde
    return __stpncpy_chk (__dest, __src, __n, __bos (__dest));
Packit Service 82fcde
  return __stpncpy_alias (__dest, __src, __n);
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (strcat (char *__restrict __dest, const char *__restrict __src))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___strcat_chk (__dest, __src, __bos (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
__fortify_function char *
Packit Service 82fcde
__NTH (strncat (char *__restrict __dest, const char *__restrict __src,
Packit Service 82fcde
		size_t __len))
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
#endif /* bits/string_fortified.h */