git: 8b0682644e2d - main - Fix the GCC build after _FORTIFY_SOURCE import

From: Kyle Evans <kevans_at_FreeBSD.org>
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 *