1356356Skevans/*- 2356356Skevans * SPDX-License-Identifier: BSD-2-Clause 3356356Skevans * 4356356Skevans * Copyright (c) 2019 Kyle Evans <kevans@FreeBSD.org> 5356356Skevans * 6356356Skevans * Redistribution and use in source and binary forms, with or without 7356356Skevans * modification, are permitted provided that the following conditions 8356356Skevans * are met: 9356356Skevans * 1. Redistributions of source code must retain the above copyright 10356356Skevans * notice, this list of conditions and the following disclaimer. 11356356Skevans * 2. Redistributions in binary form must reproduce the above copyright 12356356Skevans * notice, this list of conditions and the following disclaimer in the 13356356Skevans * documentation and/or other materials provided with the distribution. 14356356Skevans * 15356356Skevans * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16356356Skevans * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17356356Skevans * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18356356Skevans * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19356356Skevans * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20356356Skevans * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21356356Skevans * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22356356Skevans * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23356356Skevans * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24356356Skevans * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25356356Skevans * SUCH DAMAGE. 26356356Skevans */ 27356356Skevans 28356356Skevans#include <sys/cdefs.h> 29356356Skevans__FBSDID("$FreeBSD: stable/11/lib/libssp/fortify_stubs.c 356775 2020-01-16 03:38:06Z kevans $"); 30356356Skevans 31356356Skevans#include <sys/types.h> 32356356Skevans 33356356Skevans#include <stdarg.h> 34356356Skevans#include <stdlib.h> 35356356Skevans 36356356Skevans/* Signatures grabbed from LSB Core Specification 4.1 */ 37356356Skevansvoid *__memcpy_chk(void *dst, const void *src, size_t len, 38356356Skevans size_t dstlen); 39356356Skevansvoid *__memset_chk(void *dst, int c, size_t len, size_t dstlen); 40356356Skevansint __snprintf_chk(char *str, size_t maxlen, int flag, size_t strlen, 41356775Skevans const char *fmt, ...); 42356775Skevansint __sprintf_chk(char *str, int flag, size_t strlen, const char *fmt, ...); 43356356Skevanschar *__stpcpy_chk(char *dst, const char *src, size_t dstlen); 44356356Skevanschar *__strcat_chk(char *dst, const char *src, size_t dstlen); 45356356Skevanschar *__strcpy_chk(char *dst, const char *src, size_t dstlen); 46356356Skevanschar *__strncat_chk(char *dst, const char *src, size_t len, size_t dstlen); 47356356Skevanschar *__strncpy_chk(char *dst, const char *src, size_t len, size_t dstlen); 48356775Skevansint __vsnprintf_chk(char *str, size_t size, int flags, size_t len, 49356775Skevans const char *format, va_list ap); 50356356Skevansint __vsprintf_chk(char *str, int flag, size_t slen, const char *format, 51356356Skevans va_list ap); 52356356Skevans 53356356Skevans#define ABORT() abort2("_FORTIFY_SOURCE not supported", 0, NULL) 54356356Skevans 55356356Skevansvoid * 56356356Skevans__memcpy_chk(void *dst, const void *src, size_t len, 57356356Skevans size_t dstlen) 58356356Skevans{ 59356356Skevans 60356356Skevans ABORT(); 61356356Skevans} 62356356Skevans 63356356Skevansvoid * 64356356Skevans__memset_chk(void *dst, int c, size_t len, size_t dstlen) 65356356Skevans{ 66356356Skevans 67356356Skevans ABORT(); 68356356Skevans} 69356356Skevans 70356356Skevansint 71356356Skevans__snprintf_chk(char *str, size_t maxlen, int flag, size_t strlen, 72356775Skevans const char *fmt, ...) 73356356Skevans{ 74356356Skevans 75356356Skevans ABORT(); 76356356Skevans} 77356356Skevans 78356356Skevansint 79356775Skevans__sprintf_chk(char *str, int flag, size_t strlen, const char *fmt, ...) 80356356Skevans{ 81356356Skevans 82356356Skevans ABORT(); 83356356Skevans} 84356356Skevans 85356356Skevanschar * 86356356Skevans__stpcpy_chk(char *dst, const char *src, size_t dstlen) 87356356Skevans{ 88356356Skevans 89356356Skevans ABORT(); 90356356Skevans} 91356356Skevans 92356356Skevanschar * 93356356Skevans__strcat_chk(char *dst, const char *src, size_t dstlen) 94356356Skevans{ 95356356Skevans 96356356Skevans ABORT(); 97356356Skevans} 98356356Skevans 99356356Skevanschar * 100356356Skevans__strcpy_chk(char *dst, const char *src, size_t dstlen) 101356356Skevans{ 102356356Skevans 103356356Skevans ABORT(); 104356356Skevans} 105356356Skevans 106356356Skevanschar * 107356356Skevans__strncat_chk(char *dst, const char *src, size_t len, size_t dstlen) 108356356Skevans{ 109356356Skevans 110356356Skevans ABORT(); 111356356Skevans} 112356356Skevans 113356356Skevanschar * 114356356Skevans__strncpy_chk(char *dst, const char *src, size_t len, size_t dstlen) 115356356Skevans{ 116356356Skevans 117356356Skevans ABORT(); 118356356Skevans} 119356356Skevans 120356356Skevansint 121356775Skevans__vsnprintf_chk(char *str, size_t size, int flags, size_t len, 122356775Skevans const char *format, va_list ap) 123356356Skevans{ 124356356Skevans 125356356Skevans ABORT(); 126356356Skevans} 127356356Skevans 128356356Skevansint 129356356Skevans__vsprintf_chk(char *str, int flag, size_t slen, const char *format, 130356356Skevans va_list ap) 131356356Skevans{ 132356356Skevans 133356356Skevans ABORT(); 134356356Skevans} 135