diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-09-16 09:32:48 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-09-16 09:32:48 +0100 |
commit | 9ee6d97c2883d42f204a533a8bc1f4562df778fb (patch) | |
tree | b690ddc0ca30f1472887edbb0b8313629bfcbbb2 /app-admin/sudo/files | |
parent | b17a3ef12038de50228bade1f05502c74e135321 (diff) |
gentoo resync : 16.09.2020
Diffstat (limited to 'app-admin/sudo/files')
-rw-r--r-- | app-admin/sudo/files/sudo-1.9.2-glibc-2.32.patch | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/app-admin/sudo/files/sudo-1.9.2-glibc-2.32.patch b/app-admin/sudo/files/sudo-1.9.2-glibc-2.32.patch new file mode 100644 index 000000000000..6134fe736d00 --- /dev/null +++ b/app-admin/sudo/files/sudo-1.9.2-glibc-2.32.patch @@ -0,0 +1,308 @@ + +# HG changeset patch +# User Todd C. Miller <Todd.Miller@sudo.ws> +# Date 1598395693 21600 +# Node ID e30482f26924b07775d87ae591e54ad72e794d5e +# Parent 1ede927d99b3cb06ba514c9fd2fd7fa9a014a1b2 +Use sigabbrev_np(3) to access signal abbreviations if supported. +glibc-2.32 has removed sys_sigabbrev[], we can use sigabbrev_np(3) instead. + +diff -r 1ede927d99b3 -r e30482f26924 config.h.in +--- a/config.h.in Mon Aug 17 19:37:09 2020 -0600 ++++ b/config.h.in Tue Aug 25 16:48:13 2020 -0600 +@@ -740,6 +740,9 @@ + /* Define to 1 if you have the `sig2str' function. */ + #undef HAVE_SIG2STR + ++/* Define to 1 if you have the `sigabbrev_np' function. */ ++#undef HAVE_SIGABBREV_NP ++ + /* Define to 1 if you use S/Key. */ + #undef HAVE_SKEY + +diff -r 1ede927d99b3 -r e30482f26924 configure +--- a/configure Mon Aug 17 19:37:09 2020 -0600 ++++ b/configure Tue Aug 25 16:48:13 2020 -0600 +@@ -23687,9 +23687,21 @@ + + + if test x"${ac_cv_func_sig2str}${ac_cv_func_str2sig}" != x"yesyes"; then +- COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }strsig_test" +- HAVE_SIGNAME="false" +- ac_fn_c_check_decl "$LINENO" "sys_signame" "ac_cv_have_decl_sys_signame" " ++ for ac_func in sigabbrev_np ++do : ++ ac_fn_c_check_func "$LINENO" "sigabbrev_np" "ac_cv_func_sigabbrev_np" ++if test "x$ac_cv_func_sigabbrev_np" = xyes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SIGABBREV_NP 1 ++_ACEOF ++ ++fi ++done ++ ++ if test x"${ac_cv_func_sigabbrev_np}" != x"yes"; then ++ COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }strsig_test" ++ HAVE_SIGNAME="false" ++ ac_fn_c_check_decl "$LINENO" "sys_signame" "ac_cv_have_decl_sys_signame" " + $ac_includes_default + #include <signal.h> + +@@ -23705,7 +23717,7 @@ + _ACEOF + if test $ac_have_decl = 1; then : + +- HAVE_SIGNAME="true" ++ HAVE_SIGNAME="true" + + fi + ac_fn_c_check_decl "$LINENO" "_sys_signame" "ac_cv_have_decl__sys_signame" " +@@ -23724,7 +23736,7 @@ + _ACEOF + if test $ac_have_decl = 1; then : + +- HAVE_SIGNAME="true" ++ HAVE_SIGNAME="true" + + fi + ac_fn_c_check_decl "$LINENO" "sys_sigabbrev" "ac_cv_have_decl_sys_sigabbrev" " +@@ -23743,12 +23755,12 @@ + _ACEOF + if test $ac_have_decl = 1; then : + +- HAVE_SIGNAME="true" +- +-fi +- +- if test "$HAVE_SIGNAME" != "true"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for undeclared sys_sigabbrev" >&5 ++ HAVE_SIGNAME="true" ++ ++fi ++ ++ if test "$HAVE_SIGNAME" != "true"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for undeclared sys_sigabbrev" >&5 + $as_echo_n "checking for undeclared sys_sigabbrev... " >&6; } + if ${sudo_cv_var_sys_sigabbrev+:} false; then : + $as_echo_n "(cached) " >&6 +@@ -23777,17 +23789,18 @@ + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_sys_sigabbrev" >&5 + $as_echo "$sudo_cv_var_sys_sigabbrev" >&6; } +- if test "$sudo_cv_var_sys_sigabbrev" = yes; then +- $as_echo "#define HAVE_SYS_SIGABBREV 1" >>confdefs.h +- +- else +- case " $LIBOBJS " in ++ if test "$sudo_cv_var_sys_sigabbrev" = yes; then ++ $as_echo "#define HAVE_SYS_SIGABBREV 1" >>confdefs.h ++ ++ else ++ case " $LIBOBJS " in + *" signame.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS signame.$ac_objext" + ;; + esac + +- SIGNAME=signame.lo ++ SIGNAME=signame.lo ++ fi + fi + fi + fi +diff -r 1ede927d99b3 -r e30482f26924 configure.ac +--- a/configure.ac Mon Aug 17 19:37:09 2020 -0600 ++++ b/configure.ac Tue Aug 25 16:48:13 2020 -0600 +@@ -3498,29 +3498,32 @@ + dnl Also enable unit tests for sig2str() and str2sig(). + dnl + if test x"${ac_cv_func_sig2str}${ac_cv_func_str2sig}" != x"yesyes"; then +- COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }strsig_test" +- HAVE_SIGNAME="false" +- AC_CHECK_DECLS([sys_signame, _sys_signame, sys_sigabbrev], [ +- HAVE_SIGNAME="true" +- ], [ ], [ ++ AC_CHECK_FUNCS([sigabbrev_np]) ++ if test x"${ac_cv_func_sigabbrev_np}" != x"yes"; then ++ COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }strsig_test" ++ HAVE_SIGNAME="false" ++ AC_CHECK_DECLS([sys_signame, _sys_signame, sys_sigabbrev], [ ++ HAVE_SIGNAME="true" ++ ], [ ], [ + AC_INCLUDES_DEFAULT + #include <signal.h> +- ]) +- if test "$HAVE_SIGNAME" != "true"; then +- AC_CACHE_CHECK([for undeclared sys_sigabbrev], +- [sudo_cv_var_sys_sigabbrev], +- [AC_LINK_IFELSE( +- [AC_LANG_PROGRAM([[extern char **sys_sigabbrev;]], [[return sys_sigabbrev[1];]])], +- [sudo_cv_var_sys_sigabbrev=yes], +- [sudo_cv_var_sys_sigabbrev=no] +- ) +- ] +- ) +- if test "$sudo_cv_var_sys_sigabbrev" = yes; then +- AC_DEFINE(HAVE_SYS_SIGABBREV) +- else +- AC_LIBOBJ(signame) +- SIGNAME=signame.lo ++ ]) ++ if test "$HAVE_SIGNAME" != "true"; then ++ AC_CACHE_CHECK([for undeclared sys_sigabbrev], ++ [sudo_cv_var_sys_sigabbrev], ++ [AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([[extern char **sys_sigabbrev;]], [[return sys_sigabbrev[1];]])], ++ [sudo_cv_var_sys_sigabbrev=yes], ++ [sudo_cv_var_sys_sigabbrev=no] ++ ) ++ ] ++ ) ++ if test "$sudo_cv_var_sys_sigabbrev" = yes; then ++ AC_DEFINE(HAVE_SYS_SIGABBREV) ++ else ++ AC_LIBOBJ(signame) ++ SIGNAME=signame.lo ++ fi + fi + fi + fi +diff -r 1ede927d99b3 -r e30482f26924 lib/util/sig2str.c +--- a/lib/util/sig2str.c Mon Aug 17 19:37:09 2020 -0600 ++++ b/lib/util/sig2str.c Tue Aug 25 16:48:13 2020 -0600 +@@ -1,7 +1,7 @@ + /* + * SPDX-License-Identifier: ISC + * +- * Copyright (c) 2012-2015, 2017-2019 Todd C. Miller <Todd.Miller@sudo.ws> ++ * Copyright (c) 2012-2015, 2017-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -32,20 +32,24 @@ + #include <unistd.h> + + #include "sudo_compat.h" ++#include "sudo_util.h" + +-#if defined(HAVE_DECL_SYS_SIGNAME) && HAVE_DECL_SYS_SIGNAME == 1 +-# define sudo_sys_signame sys_signame +-#elif defined(HAVE_DECL__SYS_SIGNAME) && HAVE_DECL__SYS_SIGNAME == 1 +-# define sudo_sys_signame _sys_signame +-#elif defined(HAVE_DECL_SYS_SIGABBREV) && HAVE_DECL_SYS_SIGABBREV == 1 +-# define sudo_sys_signame sys_sigabbrev +-#else +-# ifdef HAVE_SYS_SIGABBREV +- /* sys_sigabbrev is not declared by glibc */ +-# define sudo_sys_signame sys_sigabbrev ++#if !defined(HAVE_SIGABBREV_NP) ++# if defined(HAVE_DECL_SYS_SIGNAME) && HAVE_DECL_SYS_SIGNAME == 1 ++# define sigabbrev_np(_x) sys_signame[(_x)] ++# elif defined(HAVE_DECL__SYS_SIGNAME) && HAVE_DECL__SYS_SIGNAME == 1 ++# define sigabbrev_np(_x) _sys_signame[(_x)] ++# elif defined(HAVE_SYS_SIGABBREV) ++# define sigabbrev_np(_x) sys_sigabbrev[(_x)] ++# if defined(HAVE_DECL_SYS_SIGABBREV) && HAVE_DECL_SYS_SIGABBREV == 0 ++ /* sys_sigabbrev is not declared by glibc */ ++ extern const char *const sys_sigabbrev[NSIG]; ++# endif ++# else ++# define sigabbrev_np(_x) sudo_sys_signame[(_x)] ++ extern const char *const sudo_sys_signame[NSIG]; + # endif +-extern const char *const sudo_sys_signame[NSIG]; +-#endif ++#endif /* !HAVE_SIGABBREV_NP */ + + /* + * Translate signal number to name. +@@ -77,15 +81,18 @@ + return 0; + } + #endif +- if (signo > 0 && signo < NSIG && sudo_sys_signame[signo] != NULL) { +- strlcpy(signame, sudo_sys_signame[signo], SIG2STR_MAX); +- /* Make sure we always return an upper case signame. */ +- if (islower((unsigned char)signame[0])) { +- int i; +- for (i = 0; signame[i] != '\0'; i++) +- signame[i] = toupper((unsigned char)signame[i]); ++ if (signo > 0 && signo < NSIG) { ++ const char *cp = sigabbrev_np(signo); ++ if (cp != NULL) { ++ strlcpy(signame, cp, SIG2STR_MAX); ++ /* Make sure we always return an upper case signame. */ ++ if (islower((unsigned char)signame[0])) { ++ int i; ++ for (i = 0; signame[i] != '\0'; i++) ++ signame[i] = toupper((unsigned char)signame[i]); ++ } ++ return 0; + } +- return 0; + } + errno = EINVAL; + return -1; +diff -r 1ede927d99b3 -r e30482f26924 lib/util/str2sig.c +--- a/lib/util/str2sig.c Mon Aug 17 19:37:09 2020 -0600 ++++ b/lib/util/str2sig.c Tue Aug 25 16:48:13 2020 -0600 +@@ -1,7 +1,7 @@ + /* + * SPDX-License-Identifier: ISC + * +- * Copyright (c) 2019 Todd C. Miller <Todd.Miller@sudo.ws> ++ * Copyright (c) 2019-2020 Todd C. Miller <Todd.Miller@sudo.ws> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above +@@ -37,19 +37,22 @@ + #include "sudo_compat.h" + #include "sudo_util.h" + +-#if defined(HAVE_DECL_SYS_SIGNAME) && HAVE_DECL_SYS_SIGNAME == 1 +-# define sudo_sys_signame sys_signame +-#elif defined(HAVE_DECL__SYS_SIGNAME) && HAVE_DECL__SYS_SIGNAME == 1 +-# define sudo_sys_signame _sys_signame +-#elif defined(HAVE_DECL_SYS_SIGABBREV) && HAVE_DECL_SYS_SIGABBREV == 1 +-# define sudo_sys_signame sys_sigabbrev +-#else +-# ifdef HAVE_SYS_SIGABBREV +- /* sys_sigabbrev is not declared by glibc */ +-# define sudo_sys_signame sys_sigabbrev ++#if !defined(HAVE_SIGABBREV_NP) ++# if defined(HAVE_DECL_SYS_SIGNAME) && HAVE_DECL_SYS_SIGNAME == 1 ++# define sigabbrev_np(_x) sys_signame[(_x)] ++# elif defined(HAVE_DECL__SYS_SIGNAME) && HAVE_DECL__SYS_SIGNAME == 1 ++# define sigabbrev_np(_x) _sys_signame[(_x)] ++# elif defined(HAVE_SYS_SIGABBREV) ++# define sigabbrev_np(_x) sys_sigabbrev[(_x)] ++# if defined(HAVE_DECL_SYS_SIGABBREV) && HAVE_DECL_SYS_SIGABBREV == 0 ++ /* sys_sigabbrev is not declared by glibc */ ++ extern const char *const sys_sigabbrev[NSIG]; ++# endif ++# else ++# define sigabbrev_np(_x) sudo_sys_signame[(_x)] ++ extern const char *const sudo_sys_signame[NSIG]; + # endif +-extern const char *const sudo_sys_signame[NSIG]; +-#endif ++#endif /* !HAVE_SIGABBREV_NP */ + + /* + * Many systems use aliases for source backward compatibility. +@@ -154,11 +157,11 @@ + } + } + +- /* Check sys_signame[]. */ + for (signo = 1; signo < NSIG; signo++) { +- if (sudo_sys_signame[signo] != NULL) { ++ const char *cp = sigabbrev_np(signo); ++ if (cp != NULL) { + /* On macOS sys_signame[] may contain lower-case names. */ +- if (strcasecmp(signame, sudo_sys_signame[signo]) == 0) { ++ if (strcasecmp(signame, cp) == 0) { + *result = signo; + return 0; + } + |