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