| 1 | 741 | jeremybenn | /* Checking vsnprintf.
 | 
      
         | 2 |  |  |    Copyright (C) 2005, 2009 Free Software Foundation, Inc.
 | 
      
         | 3 |  |  |  
 | 
      
         | 4 |  |  | This file is part of GCC.
 | 
      
         | 5 |  |  |  
 | 
      
         | 6 |  |  | GCC is free software; you can redistribute it and/or modify it under
 | 
      
         | 7 |  |  | the terms of the GNU General Public License as published by the Free
 | 
      
         | 8 |  |  | Software Foundation; either version 3, or (at your option) any later
 | 
      
         | 9 |  |  | version.
 | 
      
         | 10 |  |  |  
 | 
      
         | 11 |  |  | In addition to the permissions in the GNU General Public License, the
 | 
      
         | 12 |  |  | Free Software Foundation gives you unlimited permission to link the
 | 
      
         | 13 |  |  | compiled version of this file into combinations with other programs,
 | 
      
         | 14 |  |  | and to distribute those combinations without any restriction coming
 | 
      
         | 15 |  |  | from the use of this file.  (The General Public License restrictions
 | 
      
         | 16 |  |  | do apply in other respects; for example, they cover modification of
 | 
      
         | 17 |  |  | the file, and distribution when not linked into a combine
 | 
      
         | 18 |  |  | executable.)
 | 
      
         | 19 |  |  |  
 | 
      
         | 20 |  |  | GCC is distributed in the hope that it will be useful, but WITHOUT ANY
 | 
      
         | 21 |  |  | WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
      
         | 22 |  |  | FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 | 
      
         | 23 |  |  | for more details.
 | 
      
         | 24 |  |  |  
 | 
      
         | 25 |  |  | Under Section 7 of GPL version 3, you are granted additional
 | 
      
         | 26 |  |  | permissions described in the GCC Runtime Library Exception, version
 | 
      
         | 27 |  |  | 3.1, as published by the Free Software Foundation.
 | 
      
         | 28 |  |  |  
 | 
      
         | 29 |  |  | You should have received a copy of the GNU General Public License and
 | 
      
         | 30 |  |  | a copy of the GCC Runtime Library Exception along with this program;
 | 
      
         | 31 |  |  | see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 | 
      
         | 32 |  |  | <http://www.gnu.org/licenses/>.  */
 | 
      
         | 33 |  |  |  
 | 
      
         | 34 |  |  | #include "config.h"
 | 
      
         | 35 |  |  | #include <ssp/ssp.h>
 | 
      
         | 36 |  |  | #include <stdarg.h>
 | 
      
         | 37 |  |  | #ifdef HAVE_STDIO_H
 | 
      
         | 38 |  |  | # include <stdio.h>
 | 
      
         | 39 |  |  | #endif
 | 
      
         | 40 |  |  |  
 | 
      
         | 41 |  |  | extern void __chk_fail (void) __attribute__((__noreturn__));
 | 
      
         | 42 |  |  |  
 | 
      
         | 43 |  |  | #ifdef HAVE_USABLE_VSNPRINTF
 | 
      
         | 44 |  |  | int
 | 
      
         | 45 |  |  | __vsnprintf_chk (char *s, size_t n, int flags __attribute__((unused)),
 | 
      
         | 46 |  |  |                  size_t slen, const char *format, va_list arg)
 | 
      
         | 47 |  |  | {
 | 
      
         | 48 |  |  |   if (n > slen)
 | 
      
         | 49 |  |  |     __chk_fail ();
 | 
      
         | 50 |  |  |  
 | 
      
         | 51 |  |  |   return vsnprintf (s, n, format, arg);
 | 
      
         | 52 |  |  | }
 | 
      
         | 53 |  |  | #endif
 |