LCOV - code coverage report
Current view: top level - usr/include/secure - _string.h (source / functions) Hit Total Coverage
Test: all.info Lines: 2 2 100.0 %
Date: 2012-09-24 Functions: 1 1 100.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright (c) 2007 Apple Inc. All rights reserved.
       3                 :            :  *
       4                 :            :  * @APPLE_LICENSE_HEADER_START@
       5                 :            :  *
       6                 :            :  * This file contains Original Code and/or Modifications of Original Code
       7                 :            :  * as defined in and that are subject to the Apple Public Source License
       8                 :            :  * Version 2.0 (the 'License'). You may not use this file except in
       9                 :            :  * compliance with the License. Please obtain a copy of the License at
      10                 :            :  * http://www.opensource.apple.com/apsl/ and read it before using this
      11                 :            :  * file.
      12                 :            :  *
      13                 :            :  * The Original Code and all software distributed under the License are
      14                 :            :  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
      15                 :            :  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
      16                 :            :  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
      17                 :            :  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
      18                 :            :  * Please see the License for the specific language governing rights and
      19                 :            :  * limitations under the License.
      20                 :            :  *
      21                 :            :  * @APPLE_LICENSE_HEADER_END@
      22                 :            :  */
      23                 :            : 
      24                 :            : #ifndef _STRING_H_
      25                 :            : # error "Never use <secure/_string.h> directly; include <string.h> instead."
      26                 :            : #endif
      27                 :            : 
      28                 :            : #ifndef _SECURE__STRING_H_
      29                 :            : #define _SECURE__STRING_H_
      30                 :            : 
      31                 :            : #include <sys/cdefs.h>
      32                 :            : #include <secure/_common.h>
      33                 :            : 
      34                 :            : #if _USE_FORTIFY_LEVEL > 0
      35                 :            : 
      36                 :            : /* memcpy, mempcpy, memmove, memset, strcpy, stpcpy, strncpy, stpncpy,
      37                 :            :    strcat, and strncat */
      38                 :            : 
      39                 :            : #undef memcpy
      40                 :            : #undef memmove
      41                 :            : #undef memset
      42                 :            : #undef strcpy
      43                 :            : #if __DARWIN_C_LEVEL >= 200809L
      44                 :            : #undef stpcpy
      45                 :            : #undef stpncpy
      46                 :            : #endif
      47                 :            : #undef strncpy
      48                 :            : #undef strcat
      49                 :            : #if ! (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 32000)
      50                 :            : #undef strncat
      51                 :            : #endif
      52                 :            : 
      53                 :            : #define memcpy(dest, src, len)                                  \
      54                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
      55                 :            :    ? __builtin___memcpy_chk (dest, src, len, __darwin_obsz0 (dest))     \
      56                 :            :    : __inline_memcpy_chk (dest, src, len))
      57                 :            : 
      58                 :            : static __inline void *
      59                 :        446 : __inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
      60                 :            : {
      61                 :        446 :   return __builtin___memcpy_chk (__dest, __src, __len, __darwin_obsz0(__dest));
      62                 :            : }
      63                 :            : 
      64                 :            : #define memmove(dest, src, len)                                 \
      65                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
      66                 :            :    ? __builtin___memmove_chk (dest, src, len, __darwin_obsz0 (dest))    \
      67                 :            :    : __inline_memmove_chk (dest, src, len))
      68                 :            : 
      69                 :            : static __inline void *
      70                 :            : __inline_memmove_chk (void *__dest, const void *__src, size_t __len)
      71                 :            : {
      72                 :            :   return __builtin___memmove_chk (__dest, __src, __len, __darwin_obsz0(__dest));
      73                 :            : }
      74                 :            : 
      75                 :            : #define memset(dest, val, len)                                  \
      76                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
      77                 :            :    ? __builtin___memset_chk (dest, val, len, __darwin_obsz0 (dest))     \
      78                 :            :    : __inline_memset_chk (dest, val, len))
      79                 :            : 
      80                 :            : static __inline void *
      81                 :            : __inline_memset_chk (void *__dest, int __val, size_t __len)
      82                 :            : {
      83                 :            :   return __builtin___memset_chk (__dest, __val, __len, __darwin_obsz0(__dest));
      84                 :            : }
      85                 :            : 
      86                 :            : #define strcpy(dest, src)                                       \
      87                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
      88                 :            :    ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest))           \
      89                 :            :    : __inline_strcpy_chk (dest, src))
      90                 :            : 
      91                 :            : static __inline char *
      92                 :            : __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src)
      93                 :            : {
      94                 :            :   return __builtin___strcpy_chk (__dest, __src, __darwin_obsz(__dest));
      95                 :            : }
      96                 :            : 
      97                 :            : #if __DARWIN_C_LEVEL >= 200809L
      98                 :            : #define stpcpy(dest, src)                                       \
      99                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
     100                 :            :    ? __builtin___stpcpy_chk (dest, src, __darwin_obsz (dest))           \
     101                 :            :    : __inline_stpcpy_chk (dest, src))
     102                 :            : 
     103                 :            : static __inline char *
     104                 :            : __inline_stpcpy_chk (char *__dest, const char *__src)
     105                 :            : {
     106                 :            :   return __builtin___stpcpy_chk (__dest, __src, __darwin_obsz(__dest));
     107                 :            : }
     108                 :            : 
     109                 :            : #define stpncpy(dest, src, len)                                 \
     110                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
     111                 :            :    ? __builtin___stpncpy_chk (dest, src, len, __darwin_obsz (dest))     \
     112                 :            :    : __inline_stpncpy_chk (dest, src, len))
     113                 :            : 
     114                 :            : static __inline char *
     115                 :            : __inline_stpncpy_chk (char *__restrict __dest, const char *__restrict __src,
     116                 :            :                       size_t __len)
     117                 :            : {
     118                 :            :   return __builtin___stpncpy_chk (__dest, __src, __len, __darwin_obsz(__dest));
     119                 :            : }
     120                 :            : #endif
     121                 :            : 
     122                 :            : #define strncpy(dest, src, len)                                 \
     123                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
     124                 :            :    ? __builtin___strncpy_chk (dest, src, len, __darwin_obsz (dest))     \
     125                 :            :    : __inline_strncpy_chk (dest, src, len))
     126                 :            : 
     127                 :            : static __inline char *
     128                 :            : __inline_strncpy_chk (char *__restrict __dest, const char *__restrict __src,
     129                 :            :                       size_t __len)
     130                 :            : {
     131                 :            :   return __builtin___strncpy_chk (__dest, __src, __len, __darwin_obsz(__dest));
     132                 :            : }
     133                 :            : 
     134                 :            : #define strcat(dest, src)                                       \
     135                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
     136                 :            :    ? __builtin___strcat_chk (dest, src, __darwin_obsz (dest))           \
     137                 :            :    : __inline_strcat_chk (dest, src))
     138                 :            : 
     139                 :            : static __inline char *
     140                 :            : __inline_strcat_chk (char *__restrict __dest, const char *__restrict __src)
     141                 :            : {
     142                 :            :   return __builtin___strcat_chk (__dest, __src, __darwin_obsz(__dest));
     143                 :            : }
     144                 :            : 
     145                 :            : #if ! (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 32000)
     146                 :            : #define strncat(dest, src, len)                                 \
     147                 :            :   ((__darwin_obsz0 (dest) != (size_t) -1)                               \
     148                 :            :    ? __builtin___strncat_chk (dest, src, len, __darwin_obsz (dest))     \
     149                 :            :    : __inline_strncat_chk (dest, src, len))
     150                 :            : 
     151                 :            : static __inline char *
     152                 :            : __inline_strncat_chk (char *__restrict __dest, const char *__restrict __src,
     153                 :            :                       size_t __len)
     154                 :            : {
     155                 :            :   return __builtin___strncat_chk (__dest, __src, __len, __darwin_obsz(__dest));
     156                 :            : }
     157                 :            : #endif
     158                 :            : 
     159                 :            : #endif
     160                 :            : #endif

Generated by: LCOV version 1.9