From f3134b6f810b43afb2813939b4fb7aac22ff0caa Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Fri, 24 Jan 2025 21:36:11 -0800 Subject: [PATCH] ptsname_r: Work around ptsname_r bug on Solaris 11 OmniOS. * lib/ptsname_r.c (ptsname_r): Ensure the resulting buffer is not clobbered if it is too small on Solaris 11 OmniOS. * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): On Solaris 11 OmniOS, arrange to override ptsname_r. --- ChangeLog | 8 ++++++++ lib/ptsname_r.c | 4 ++-- m4/ptsname_r.m4 | 8 +++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fc47b2d9c..e75769075b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2025-01-24 Collin Funk + + ptsname_r: Work around ptsname_r bug on Solaris 11 OmniOS. + * lib/ptsname_r.c (ptsname_r): Ensure the resulting buffer is not + clobbered if it is too small on Solaris 11 OmniOS. + * m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): On Solaris 11 OmniOS, arrange to + override ptsname_r. + 2025-01-24 Collin Funk strerrorname_np: Work around a bug on Solaris 11 OmniOS. diff --git a/lib/ptsname_r.c b/lib/ptsname_r.c index cc1ae495ec..3452afb844 100644 --- a/lib/ptsname_r.c +++ b/lib/ptsname_r.c @@ -1,5 +1,5 @@ /* Determine name of the slave side of a pseudo-terminal. - Copyright (C) 1998, 2002, 2010-2024 Free Software Foundation, Inc. + Copyright (C) 1998, 2002, 2010-2025 Free Software Foundation, Inc. This file is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -68,7 +68,7 @@ ptsname_r (int fd, char *buf, size_t buflen) #undef ptsname_r { #if HAVE_ESSENTIALLY_WORKING_PTSNAME_R -# if defined __NetBSD__ +# if defined __NetBSD__ || defined __sun char tmpbuf[32]; if (buf == NULL) return EINVAL; diff --git a/m4/ptsname_r.m4 b/m4/ptsname_r.m4 index 286ccab8c9..00535baecc 100644 --- a/m4/ptsname_r.m4 +++ b/m4/ptsname_r.m4 @@ -1,6 +1,6 @@ # ptsname_r.m4 -# serial 10 -dnl Copyright (C) 2010-2024 Free Software Foundation, Inc. +# serial 11 +dnl Copyright (C) 2010-2025 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -78,8 +78,10 @@ main (void) dnl result buffer. We don't use an AC_RUN_IFELSE test here, because dnl while the bug exists on all platforms, only NetBSD/i386 has the dnl files /dev/ptyp[01] on which the bug becomes apparent. + dnl + dnl On Solaris 11 OmniOS the result buffer is clobbered as well. case "$host_os" in - netbsd*) REPLACE_PTSNAME_R=1 ;; + netbsd* | solaris*) REPLACE_PTSNAME_R=1 ;; esac fi fi -- 2.39.5