diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2024-05-13 16:13:51 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2024-05-13 16:21:38 +0000 |
commit | 8b0682644e2da9c595d9249c9a0c8eb499421b5e (patch) | |
tree | 8f0a95a9c377ae6a9fe82215950d13033742329a /lib/libc | |
parent | b667c40f9ff6db3ad5978368b3771e675759b474 (diff) | |
download | src-8b0682644e2da9c595d9249c9a0c8eb499421b5e.tar.gz src-8b0682644e2da9c595d9249c9a0c8eb499421b5e.zip |
Fix the GCC build after _FORTIFY_SOURCE import
We haven't exposed gets(3) in a long time, rip out __gets_chk before
it's too late and something builds a gets(3) user with it enabled.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/secure/Makefile.inc | 2 | ||||
-rw-r--r-- | lib/libc/secure/Symbol.map | 1 | ||||
-rw-r--r-- | lib/libc/secure/gets_chk.c | 74 |
3 files changed, 1 insertions, 76 deletions
diff --git a/lib/libc/secure/Makefile.inc b/lib/libc/secure/Makefile.inc index 3b1ad879c715..28289127c7a6 100644 --- a/lib/libc/secure/Makefile.inc +++ b/lib/libc/secure/Makefile.inc @@ -4,7 +4,7 @@ .PATH: ${LIBC_SRCTOP}/secure # _FORTIFY_SOURCE -SRCS+= gets_chk.c fgets_chk.c memcpy_chk.c memmove_chk.c memset_chk.c \ +SRCS+= fgets_chk.c memcpy_chk.c memmove_chk.c memset_chk.c \ snprintf_chk.c sprintf_chk.c stpcpy_chk.c stpncpy_chk.c \ strcat_chk.c strcpy_chk.c strncat_chk.c strncpy_chk.c \ vsnprintf_chk.c vsprintf_chk.c diff --git a/lib/libc/secure/Symbol.map b/lib/libc/secure/Symbol.map index 7859fcee3821..0d854039955f 100644 --- a/lib/libc/secure/Symbol.map +++ b/lib/libc/secure/Symbol.map @@ -5,7 +5,6 @@ FBSD_1.0 { }; FBSD_1.8 { - __gets_chk; __fgets_chk; __memcpy_chk; __memmove_chk; diff --git a/lib/libc/secure/gets_chk.c b/lib/libc/secure/gets_chk.c deleted file mode 100644 index 18c1e2d18f43..000000000000 --- a/lib/libc/secure/gets_chk.c +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2006 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Christos Zoulas. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#include <sys/cdefs.h> -__RCSID("$NetBSD: gets_chk.c,v 1.7 2013/10/04 20:49:16 christos Exp $"); - -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <ssp/stdio.h> -#include <ssp/string.h> - -char *__gets_unsafe(char *); - -char * -__gets_chk(char * __restrict buf, size_t slen) -{ - char *abuf; - size_t len; - - if (slen >= (size_t)INT_MAX) - return (__gets_unsafe(buf)); - - if ((abuf = malloc(slen + 1)) == NULL) - return (__gets_unsafe(buf)); - - if (fgets(abuf, (int)(slen + 1), stdin) == NULL) { - free(abuf); - return (NULL); - } - - len = strlen(abuf); - if (len > 0 && abuf[len - 1] == '\n') - --len; - - if (len >= slen) - __chk_fail(); - - (void)memcpy(buf, abuf, len); - - buf[len] = '\0'; - free(abuf); - return (buf); -} |