git: 8b0682644e2d - main - Fix the GCC build after _FORTIFY_SOURCE import
Date: Mon, 13 May 2024 16:21:45 UTC
The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=8b0682644e2da9c595d9249c9a0c8eb499421b5e commit 8b0682644e2da9c595d9249c9a0c8eb499421b5e Author: Kyle Evans <kevans@FreeBSD.org> AuthorDate: 2024-05-13 16:13:51 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2024-05-13 16:21:38 +0000 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. --- include/ssp/stdio.h | 6 ---- lib/libc/secure/Makefile.inc | 2 +- lib/libc/secure/Symbol.map | 1 - lib/libc/secure/gets_chk.c | 74 -------------------------------------------- lib/libssp/Makefile | 2 +- lib/libssp/Symbol.map | 1 - lib/libssp/ssp.3 | 2 -- 7 files changed, 2 insertions(+), 86 deletions(-) diff --git a/include/ssp/stdio.h b/include/ssp/stdio.h index 72e3236eac80..ed7303497a45 100644 --- a/include/ssp/stdio.h +++ b/include/ssp/stdio.h @@ -48,7 +48,6 @@ int __snprintf_chk(char *__restrict, size_t, int, size_t, int __vsnprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict, __va_list) __printflike(5, 0); -char *__gets_chk(char *, size_t); char *__fgets_chk(char *, int, size_t, FILE *); __END_DECLS @@ -78,11 +77,6 @@ __END_DECLS fmt, ap); \ }) -#define gets(str) ({ \ - char *_ssp_str = (str); \ - __gets_chk(_ssp_str, __ssp_bos(_ssp_str)); \ -}) - #define fgets(str, len, fp) ({ \ char *_ssp_str = (str); \ __fgets_chk(_ssp_str, len, __ssp_bos(_ssp_str), fp); \ 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); -} diff --git a/lib/libssp/Makefile b/lib/libssp/Makefile index cc6b88342f9c..1a95c4b49844 100644 --- a/lib/libssp/Makefile +++ b/lib/libssp/Makefile @@ -4,7 +4,7 @@ SHLIBDIR?= /lib SHLIB= ssp SHLIB_MAJOR= 0 -SSP_SRCS= gets_chk.c fgets_chk.c memcpy_chk.c memmove_chk.c memset_chk.c \ +SSP_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/libssp/Symbol.map b/lib/libssp/Symbol.map index 367922d58085..e401bf9293e2 100644 --- a/lib/libssp/Symbol.map +++ b/lib/libssp/Symbol.map @@ -20,7 +20,6 @@ LIBSSP_1.0 { }; LIBSSP_1.1 { - __gets_chk; __fgets_chk; __memmove_chk; __stpncpy_chk; diff --git a/lib/libssp/ssp.3 b/lib/libssp/ssp.3 index f89dcc549ba7..5b00fe53f9fc 100644 --- a/lib/libssp/ssp.3 +++ b/lib/libssp/ssp.3 @@ -49,8 +49,6 @@ .Ft int .Fn vsnprintf "char *str" "size_t len" "const char *fmt" "va_list ap" .Ft char * -.Fn gets "char *str" -.Ft char * .Fn fgets "char *str" "int len" "FILE *fp" .In ssp/string.h .Ft void *