pam_ssh_agent_auth: gcc-14 compatibility

This commit is contained in:
Jörg Deckert 2024-11-25 19:32:11 +01:00
parent 474b9d42ed
commit 10ff9a1553
8 changed files with 400 additions and 2 deletions

View File

@ -2,4 +2,4 @@ AUX tmux-confd 149 BLAKE2B a330772d67df5f2ee1938588c277faf7252466c6d14b65abf5f3c
AUX tmux-initd 971 BLAKE2B 4b206e0b544e169cb04f9cdfcf717c47c2e56765838227c829b71eee0bc055db717a0e7e240ea8a31069b5cf1ba5a67d4e61e18561c2849839a3e4f0a97704a7 SHA512 cb2e9ecb7bfa2a49b6d30040b03a172a59cf6880ddc306de476b81b75af4d1cd0eac4a1a5fbb88b3f9e391d6a163305af414743135d6add320e815ff00365c64
AUX tmux.service 258 BLAKE2B 9b2520515c84e8fed625e00d13a26cccdbe0b7e25bd50e9464b4b024e02e63e6fc81e2cf5331c62ca7add0aa15c069333905d1d35e9e09dd9bf70d83be9e4945 SHA512 819332d56f43d2f0b6e7818d34b6e0589a27ef658bff489783538536f743cfbf7434b0e1ce4de42bf1bc280ea202d2535a29859e54c8331c3deec066d4a06a5a
AUX tmux.service.conf 152 BLAKE2B d5bb66310c2d4338bea3ad9034014dc391361ef28e6f4f4282aeceab208955a5108e9f5fdf99771cdaa04322b841465f6335d66ee8e495e6c330ebcbdd5acff4 SHA512 9bfaf1c1c9f60f7a76685e75f779e34be00c1a1fc65f10713f3f8bf8fbe3e265c0c7b1b10f787b2ccfefc5a46eca0a667611f65e622995384ba0931504c25cdc
EBUILD tmuxservice-1.0.ebuild 684 BLAKE2B 98d5dde894bc3dab71bcf5a1236c8b9a9967f3221c03ad742175463deb7b343957c009271245dd73a1ded0fa75b664534cfaa833ce84b2adc739f501cdecdf37 SHA512 c0604e491224662d066d005f8c84badbea417ba7c7a50831632584de19d115ebf97aa378532ac566857ffb2ab0fb1568c0f76e536953cef95bcb3711f8e19e22
EBUILD tmuxservice-1.0.ebuild 684 BLAKE2B 56e12b1555f17b6c80e07f2d6fa6b60d748d836239462810fab372a247fe5bf9fb934e0aa172aeda687e850dd1f133306879a04491a1cfa42df7409f3df4062f SHA512 22a6d35949cd7bbf2d97c91052d0fc7a19f50922c022d6cb07e5200c8f1c878119a43e5cd62f9015ffbc49662db0f3077f7465b25d955c140d701393750240e6

View File

@ -1,4 +1,4 @@
EAPI="6"
EAPI="8"
inherit systemd

View File

@ -0,0 +1,7 @@
AUX pam_ssh_agent_auth-0.10.4-0001-Fix-function-prototypes-in-configure.patch 1524 BLAKE2B 404fc791503e497db68b26380c2f3f00be5ef2f85853336e71743351fb5b3927fe3d1226a6eea8076b683cf48dd7ac16ce75a459f57a208deaefcd81b9560c97 SHA512 42b0047704da6cd57c0bfa2295b9a204ba61b42da6a14cbc0478cd116d0fecb7e853f3bb0cbbe08eea614456ab08d2c33127084a5bb18499eebdabf752dd400b
AUX pam_ssh_agent_auth-0.10.4-0002-Add-missing-includes-implicit-function-declarations.patch 6688 BLAKE2B a97e67fbaa7a29cfdd90d806ed81c7d16fc9adc7abc50a32a665e2aa23e7b6bffdbe028e05014b4f1fbb227275348546bec0b29ce0467727cd1ba71614b6d2e2 SHA512 a21a5f2fe0df9f732101c540f94a1738cf21b54e3a785139241413fd2b474afec9e4b081105bedb834e1faf2abbede6626dd5b76746c9100d0ae277c1fcd39d8
AUX pam_ssh_agent_auth-0.10.4-0003-gcc-14.patch 1685 BLAKE2B 2d2c9b46a4616f2f665306bd059694c705296f42d1664c3faecb4c8f69220f547717213d0aff2636028ead484298f1040e2e6527e120eeacc27f355839e39e43 SHA512 42cd73ae1e4553ba9fa60b4df35ae01a270dc591c81c3f9bb8120f7faf042947fbb2fdd6207b15d249bdacff5e69192cea224b67c2f9ce48e6c42a7ef6b2d657
DIST pam_ssh_agent_auth-0.10.4.tar.gz 307110 BLAKE2B dad39724db4c35ff42e28492c23ab1073baf859ecf797003509b8aa3d29c71e7fae9601d193af1def58c64f149ced07e4e050fac89ae7f42fcbce5241b99df7b SHA512 caccf72174d15e43f4c86a459ac6448682e62116557cf1e1e828955f3d1731595b238df42adec57860e7f341e92daf5d8285020bcb5018f3b8a5145aa32ee1c2
DIST pam_ssh_agent_auth-ed25519-donna.tar.gz 1169972 BLAKE2B f44fa6c00dbb5cdfe51661cb559428bf24c9886e166366d1700d479f033b8b61621d7821d39a9949a7ef7cd6f5be16be575790a8f6fee03276c2c142f65a792a SHA512 5e8b838bc66bdb1983e62b0ae969449741a3fb223198bce26fe3a8996e324728e8ba0e5259f9ef3db613fd484db21459e98c39367f7240940bc537210c6d7f63
EBUILD pam_ssh_agent_auth-0.10.4-r2.ebuild 1783 BLAKE2B 355236aee9ac51b57cfdd7e0117ccbd0e85b5ba856d792de3aa78ca7755c2ba0cc7772c5118f66c954664359d82ebc49b2745c6a326b76521e91fbd00ef05601 SHA512 e40b877c2f76cec448f67d4966d61706a7ca045cf0db1b32a4425cbbc5710fb0d7149651f0eaf2b2df7d385260c46c24855588f5791d7acfa22f1d5e4ebea97e
MISC metadata.xml 320 BLAKE2B 72cc0874f37540256fa619149ba61ce800f7c70f72a21fbd71fbf7ce3b3d8197a0ae41ff6dd4258e00fe7b769082ddc4506554cf4225b237720f16fbea053475 SHA512 9a9ef1797edd6aa4c647f389dfb8d94b240c4bd01c4c409086b33ba7e80eae570e84035721a8989118e58fc76f048eb84b078d2237b05b6bb33ec5ea3a3b3e62

View File

@ -0,0 +1,49 @@
https://github.com/jbeverly/pam_ssh_agent_auth/pull/41
From 023579b11aa2eecfaa203dca40b2a38d69fea0f2 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 30 Sep 2022 20:51:17 +0100
Subject: [PATCH 1/2] Fix function prototypes in configure
This fixes building with Clang 16.
Bug: https://bugs.gentoo.org/870721
Signed-off-by: Sam James <sam@gentoo.org>
--- a/configure.ac
+++ b/configure.ac
@@ -500,7 +500,7 @@ int main(void) { exit(0); }
AC_DEFINE(HAVE_BUNDLE, 1, [Define if your system uses bundles instead of ELF shared objects])
AC_MSG_CHECKING(if we have working getaddrinfo)
AC_TRY_RUN([#include <mach-o/dyld.h>
-main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
+int main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
exit(0);
else
exit(1);
@@ -1467,7 +1467,7 @@ AC_MSG_CHECKING([for (overly) strict mkstemp])
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdlib.h>
-main() { char template[]="conftest.mkstemp-test";
+int main() { char template[]="conftest.mkstemp-test";
if (mkstemp(template) == -1)
exit(1);
unlink(template); exit(0);
@@ -2598,7 +2598,7 @@ dnl test snprintf (broken on SCO w/gcc)
#include <stdio.h>
#include <string.h>
#ifdef HAVE_SNPRINTF
-main()
+int main(void)
{
char buf[50];
char expected_out[50];
@@ -2615,7 +2615,7 @@ main()
exit(0);
}
#else
-main() { exit(0); }
+int main(void) { exit(0); }
#endif
]])], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ],
AC_MSG_WARN([cross compiling: Assuming working snprintf()])

View File

@ -0,0 +1,222 @@
https://github.com/jbeverly/pam_ssh_agent_auth/pull/41
From 634711a191c1b8be6ea6eb9251ab60a8cb73c6ad Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 30 Sep 2022 20:54:45 +0100
Subject: [PATCH 2/2] Add missing includes (implicit function declarations)
This fixes building with Clang 16.
Bug: https://bugs.gentoo.org/870721
Closes: https://github.com/jbeverly/pam_ssh_agent_auth/pull/36
Signed-off-by: Sam James <sam@gentoo.org>
--- a/configure.ac
+++ b/configure.ac
@@ -388,6 +388,7 @@ case "$host" in
[AC_LANG_SOURCE([[
#define testmacro foo
#define testmacro bar
+#include <stdlib.h>
int main(void) { exit(0); }
]])],
[ AC_MSG_RESULT(yes) ],
@@ -500,6 +501,7 @@ int main(void) { exit(0); }
AC_DEFINE(HAVE_BUNDLE, 1, [Define if your system uses bundles instead of ELF shared objects])
AC_MSG_CHECKING(if we have working getaddrinfo)
AC_TRY_RUN([#include <mach-o/dyld.h>
+#include <stdlib.h>
int main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
exit(0);
else
@@ -918,6 +920,7 @@ AC_MSG_CHECKING(compiler and flags for sanity)
AC_RUN_IFELSE(
[AC_LANG_SOURCE([
#include <stdio.h>
+#include <stdlib.h>
int main(){exit(0);}
])],
[ AC_MSG_RESULT(yes) ],
@@ -944,6 +947,7 @@ AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
[AC_LANG_SOURCE([[
#include <libgen.h>
#include <string.h>
+#include <stdlib.h>
int main(int argc, char **argv) {
char *s, buf[32];
@@ -1102,6 +1106,7 @@ AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <sys/types.h>
#include <dirent.h>
+#include <stdlib.h>
int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));}
]])],
[AC_MSG_RESULT(yes)],
@@ -1384,6 +1389,7 @@ if test "x$ac_cv_func_snprintf" = "xyes" ; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#include <stdlib.h>
int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');}
]])],
[AC_MSG_RESULT(yes)],
@@ -1406,8 +1412,10 @@ if test "x$ac_cv_func_asprintf" != "xyes" && \
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <sys/types.h>
+#include <stddef.h>
#include <stdio.h>
#include <stdarg.h>
+#include <stdlib.h>
int x_snprintf(char *str,size_t count,const char *fmt,...)
{
@@ -1435,7 +1443,8 @@ fi
# check that the fmt argument is const char * or just char *.
# This is only useful for when BROKEN_SNPRINTF
AC_MSG_CHECKING([whether snprintf can declare const char *fmt])
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stddef.h>
+ #include <stdio.h>
int snprintf(char *a, size_t b, const char *c, ...) { return 0; }
int main(void) { snprintf(0, 0, 0); }
]])],
@@ -1496,6 +1505,7 @@ if test ! -z "$check_for_openpty_ctty_bug"; then
#include <sys/fcntl.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <stdlib.h>
int
main()
@@ -1543,6 +1553,7 @@ if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
@@ -1615,6 +1626,7 @@ if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
@@ -1677,6 +1689,7 @@ if test "x$check_for_conflicting_getspnam" = "x1"; then
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
[
#include <shadow.h>
+#include <stdlib.h>
int main(void) {exit(0);}
])],
[
@@ -1750,6 +1763,7 @@ AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include <openssl/opensslv.h>
#define DATA "conftest.sslincver"
int main(void) {
@@ -1785,6 +1799,7 @@ AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include <openssl/opensslv.h>
#include <openssl/crypto.h>
#define DATA "conftest.ssllibver"
@@ -1828,7 +1843,9 @@ AC_MSG_CHECKING([whether OpenSSL's headers match the library])
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <string.h>
+#include <openssl/crypto.h>
#include <openssl/opensslv.h>
+#include <stdlib.h>
int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
]])],
[
@@ -1907,6 +1924,7 @@ AC_MSG_CHECKING([whether OpenSSL has crippled AES support])
AC_LINK_IFELSE(
[AC_LANG_SOURCE([[
#include <string.h>
+#include <stdlib.h>
#include <openssl/evp.h>
int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);}
]])],
@@ -1952,6 +1970,7 @@ AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <string.h>
+#include <stdlib.h>
#include <openssl/rand.h>
int main(void) { exit(RAND_status() == 1 ? 0 : 1); }
]])],
@@ -2123,6 +2142,7 @@ if test -z "$have_llong_max"; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <stdio.h>
+#include <stdlib.h>
/* Why is this so damn hard? */
#ifdef __GNUC__
# undef __GNUC__
@@ -2597,6 +2617,7 @@ dnl test snprintf (broken on SCO w/gcc)
[AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#ifdef HAVE_SNPRINTF
int main(void)
{
@@ -2740,6 +2761,7 @@ AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
ac_cv_have_accrights_in_msghdr, [
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
[
+#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
@@ -2767,6 +2789,7 @@ AC_CACHE_CHECK([for msg_control field in struct msghdr],
ac_cv_have_control_in_msghdr, [
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
[
+#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
@@ -2791,7 +2814,9 @@ if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
fi
AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
- AC_TRY_LINK([],
+ AC_TRY_LINK([
+#include <stdio.h>
+],
[ extern char *__progname; printf("%s", __progname); ],
[ ac_cv_libc_defines___progname="yes" ],
[ ac_cv_libc_defines___progname="no" ]
@@ -2871,7 +2896,9 @@ if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
fi
AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
- AC_TRY_LINK([],
+ AC_TRY_LINK([
+#include <stdio.h>
+],
[ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);],
[ ac_cv_libc_defines_sys_errlist="yes" ],
[ ac_cv_libc_defines_sys_errlist="no" ]
@@ -2884,7 +2911,9 @@ fi
AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
- AC_TRY_LINK([],
+ AC_TRY_LINK([
+#include <stdio.h>
+],
[ extern int sys_nerr; printf("%i", sys_nerr);],
[ ac_cv_libc_defines_sys_nerr="yes" ],
[ ac_cv_libc_defines_sys_nerr="no" ]

View File

@ -0,0 +1,37 @@
diff -Naur pam-ssh-agent-auth-0.10.4.orig/ssh-ecdsa.c pam-ssh-agent-auth-0.10.4/ssh-ecdsa.c
--- pam-ssh-agent-auth-0.10.4.orig/ssh-ecdsa.c 2019-07-08 18:36:13.000000000 +0200
+++ pam-ssh-agent-auth-0.10.4/ssh-ecdsa.c 2024-11-23 17:37:57.809050767 +0100
@@ -73,7 +73,7 @@
if (pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->r) == -1 ||
pamsshagentauth_buffer_get_bignum2_ret(&bb, sig->s) == -1) {
#else
- DSA_SIG_get0(sig, &r, &s);
+ DSA_SIG_get0((const DSA_SIG*)sig, (const BIGNUM **)&r, (const BIGNUM **)&s);
if (pamsshagentauth_buffer_get_bignum2_ret(&bb, r) == -1 ||
pamsshagentauth_buffer_get_bignum2_ret(&bb, s) == -1) {
#endif
@@ -145,7 +145,7 @@
if ((pamsshagentauth_buffer_get_bignum2_ret(&b, sig->r) == -1) ||
(pamsshagentauth_buffer_get_bignum2_ret(&b, sig->s) == -1))
#else
- DSA_SIG_get0(sig, &r, &s);
+ DSA_SIG_get0((const DSA_SIG*)sig, (const BIGNUM **)&r, (const BIGNUM **)&s);
if ((pamsshagentauth_buffer_get_bignum2_ret(&b, r) == -1) ||
(pamsshagentauth_buffer_get_bignum2_ret(&b, s) == -1))
#endif
diff -Naur pam-ssh-agent-auth-0.10.4.orig/ssh-rsa.c pam-ssh-agent-auth-0.10.4/ssh-rsa.c
--- pam-ssh-agent-auth-0.10.4.orig/ssh-rsa.c 2019-07-08 18:36:13.000000000 +0200
+++ pam-ssh-agent-auth-0.10.4/ssh-rsa.c 2024-11-23 17:36:32.237044010 +0100
@@ -56,9 +56,9 @@
return -1;
}
md = EVP_MD_CTX_create();
- EVP_DigestInit(&md, evp_md);
- EVP_DigestUpdate(&md, data, datalen);
- EVP_DigestFinal(&md, digest, &dlen);
+ EVP_DigestInit(md, evp_md);
+ EVP_DigestUpdate(md, data, datalen);
+ EVP_DigestFinal(md, digest, &dlen);
slen = RSA_size(key->rsa);
sig = pamsshagentauth_xmalloc(slen);

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<!-- maintainer-needed -->
<upstream>
<remote-id type="sourceforge">pamsshagentauth</remote-id>
<remote-id type="github">jbeverly/pam_ssh_agent_auth</remote-id>
</upstream>
</pkgmetadata>

View File

@ -0,0 +1,74 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools toolchain-funcs pam flag-o-matic
DESCRIPTION="Simple module to authenticate users against their ssh-agent keys"
HOMEPAGE="http://pamsshagentauth.sourceforge.net"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/jbeverly/${PN}.git"
inherit git-r3
else
ED25519_DONNA_COMMIT="8757bd4cd209cb032853ece0ce413f122eef212c"
SRC_URI="https://github.com/jbeverly/pam_ssh_agent_auth/archive/refs/tags/${P}.tar.gz"
SRC_URI+=" https://github.com/floodyberry/ed25519-donna/archive/${ED25519_DONNA_COMMIT}.tar.gz -> ${PN}-ed25519-donna.tar.gz"
S="${WORKDIR}"/${PN}-${P}
KEYWORDS="~amd64 ~arm ~x86"
fi
LICENSE="MIT"
SLOT="0"
DEPEND="
dev-libs/openssl:=
sys-libs/pam
"
RDEPEND="
${DEPEND}
virtual/ssh
"
# Needed for pod2man
BDEPEND="dev-lang/perl"
PATCHES=(
"${FILESDIR}"/${PN}-0.10.4-0001-Fix-function-prototypes-in-configure.patch
"${FILESDIR}"/${PN}-0.10.4-0002-Add-missing-includes-implicit-function-declarations.patch
"${FILESDIR}"/${PN}-0.10.4-0003-gcc-14.patch
)
src_prepare() {
default
# Missing from tag
rm -r ed25519-donna || die
ln -s "${WORKDIR}"/ed25519-donna-${ED25519_DONNA_COMMIT} "${S}"/ed25519-donna || die
# For configure patches
eautoreconf
}
src_configure() {
pammod_hide_symbols
# bug #874843, use POSIX type names
use elibc_musl && append-cppflags -Du_char=uint8_t -Du_int=uint32_t
# bug #725720
export AR="$(type -P $(tc-getAR))"
econf \
--without-openssl-header-check \
--libexecdir="$(getpam_mod_dir)"
}
src_install() {
# Don't use emake install as it makes it harder to have proper
# install paths.
dopammod pam_ssh_agent_auth.so
doman pam_ssh_agent_auth.8
dodoc CONTRIBUTORS
}