The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=e26259f48afe98022d885f02fbb8abcd7878e41a
commit e26259f48afe98022d885f02fbb8abcd7878e41a Author: Cy Schubert <c...@freebsd.org> AuthorDate: 2025-07-31 16:51:20 +0000 Commit: Cy Schubert <c...@freebsd.org> CommitDate: 2025-08-07 17:17:00 +0000 gssapi,krb5: Replace libgssapi with the MIT version lib/libgssapi is based on Heimdal. As on Linux systems, the MIT libgssapi_krb5 replaces it. With both gssapi libraries and header files installed results in broken buildworld (gssd) and ports that will not build without modifications to support the MIT gssapi in an alternate location. 73ed0c7992fd removed the MIT GSSAPI headers from /usr/include. Apps using MIT KRB5 gssapi functions and structures will fail to build without this patch. This patch includes a temporary patch to usr.sbin/gssd to allow it to build with this patch. rmacklem@ has a patch for this and for kgssapi that uses this patch to resolve kgssapi issues for NFS with Kerberos. This patch is an updated version of D51661 to allow it to build following additional patchs to the tree. This should have been implmented with 7e35117eb07f. Fixes: 7e35117eb07f, 73ed0c7992fd Differential Revision: https://reviews.freebsd.org/D51661 --- Makefile.inc1 | 6 ++++-- ObsoleteFiles.inc | 6 ++++++ etc/gss-krb5/Makefile | 2 +- etc/gss-krb5/qop | 1 - etc/mtree/BSD.include.dist | 4 ---- include/Makefile | 2 +- krb5/include/Makefile | 5 ++--- krb5/include/gssapi/Makefile | 9 ++------- krb5/lib/gssapi/generic/Makefile.inc | 2 +- lib/Makefile | 7 ++++++- lib/librpcsec_gss/Makefile | 6 ++++++ secure/libexec/sshd-session/Makefile | 9 ++++----- secure/usr.bin/ssh/Makefile | 4 ++++ secure/usr.sbin/sshd/Makefile | 4 ++++ share/mk/src.libnames.mk | 4 ++++ tools/build/mk/OptionalObsoleteFiles.inc | 3 +++ usr.sbin/gssd/Makefile | 5 ++--- usr.sbin/gssd/gssd.c | 3 +++ 18 files changed, 53 insertions(+), 29 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index e6c9b49eefa3..9128d1d8ee77 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -3379,8 +3379,8 @@ secure/lib/libssh__L: lib/libldns__L .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" .if ${MK_MITKRB5} != "no" -secure/lib/libssh__L: lib/libgssapi__L krb5/lib/krb5__L \ - krb5/util/et__L lib/libmd__L krb5/util/support__L +secure/lib/libssh__L: krb5/lib/gssapi__L krb5/lib/krb5__L \ + krb5/lib/crypto__L krb5/util/et__L lib/libmd__L krb5/util/support__L .else secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ @@ -3437,8 +3437,10 @@ kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbas lib/libsqlite3__L: lib/libthr__L .if ${MK_GSSAPI} != "no" +.if ${MK_MITKRB5} == "no" _lib_libgssapi= lib/libgssapi .endif +.endif .if ${MK_KERBEROS} != "no" .if ${MK_MITKRB5} != "no" diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 86a449c80a76..2f63bbea5a49 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,12 @@ # xargs -n1 | sort | uniq -d; # done +# 20250807: Replace lib/libgssapi with krb5/lib/gssapi +OLD_FILES+=usr/include/gssapi_krb5/gssapi/gssapi.h +OLD_DIRS+=usr/include/gssapi_krb5/gssapi +OLD_DIRS+=usr/include/gssapi_krb5 +OLD_FILES+=etc/gssapi/qop + # 20250802: libutil bumped to 10 OLD_LIBS+=lib/libutil.so.9 diff --git a/etc/gss-krb5/Makefile b/etc/gss-krb5/Makefile index 301a8e074e8c..8886ed35e281 100644 --- a/etc/gss-krb5/Makefile +++ b/etc/gss-krb5/Makefile @@ -1,4 +1,4 @@ -FILES= mech qop +FILES= mech NO_OBJ= FILESDIR= /etc/gss diff --git a/etc/gss-krb5/qop b/etc/gss-krb5/qop deleted file mode 100644 index 7d5b6b8f33dd..000000000000 --- a/etc/gss-krb5/qop +++ /dev/null @@ -1 +0,0 @@ -GSS_KRB5_CONF_C_QOP_DES3_KD 0x0200 kerberosv5 diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index 0e9f739425a1..28c4d91ac1c0 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -258,10 +258,6 @@ .. gssapi .. - gssapi_krb5 - gssapi - .. - .. gssrpc .. infiniband diff --git a/include/Makefile b/include/Makefile index af7ef2337941..2792d594a888 100644 --- a/include/Makefile +++ b/include/Makefile @@ -293,7 +293,7 @@ LSUBSUBDIRS+= netgraph/bluetooth/include LSUBDIRS+= fs/cuse .endif -.if ${MK_GSSAPI} != "no" +.if ${MK_GSSAPI} != "no" && ${MK_MITKRB5} == "no" SUBDIR+= gssapi INCS+= gssapi.h .endif diff --git a/krb5/include/Makefile b/krb5/include/Makefile index 699211b9c3c9..64c5d39b867b 100644 --- a/krb5/include/Makefile +++ b/krb5/include/Makefile @@ -17,13 +17,12 @@ SUBDIR= krb5 gssrpc gssapi SUBDIR_PARALLEL= -INCSGROUPS= INCS - INCSDIR= ${INCLUDEDIR} .PATH: ${KRB5_DIR}/include -INCS= kdb.h \ +INCS= gssapi.h \ + kdb.h \ krad.h \ krb5.h diff --git a/krb5/include/gssapi/Makefile b/krb5/include/gssapi/Makefile index 4959bf78944d..b181187e9d95 100644 --- a/krb5/include/gssapi/Makefile +++ b/krb5/include/gssapi/Makefile @@ -15,16 +15,11 @@ INCSGROUPS= INCS GSSAPI_KRB5 INCSDIR= ${INCLUDEDIR}/gssapi -GSSAPI_KRB5DIR= ${INCLUDEDIR}/gssapi_krb5 -INCS= gssapi_alloc.h \ +INCS= gssapi.h \ + gssapi_alloc.h \ gssapi_ext.h \ gssapi_generic.h \ gssapi_krb5.h -# This gssapi header file is only needed should an app need -# to build using the MIT KRB5 GSSAPI library. - -GSSAPI_KRB5= gssapi.h - .include <bsd.prog.mk> diff --git a/krb5/lib/gssapi/generic/Makefile.inc b/krb5/lib/gssapi/generic/Makefile.inc index 9de18079a341..ef76172655d6 100644 --- a/krb5/lib/gssapi/generic/Makefile.inc +++ b/krb5/lib/gssapi/generic/Makefile.inc @@ -36,7 +36,7 @@ SRCS+= disp_com_err_status.c \ INCSGROUPS= GSSAPI_INCS GSSAPI_INCS= gssapi.h INCS+= ${GENI} -GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi_krb5/gssapi +GSSAPI_INCSDIR= ${INCLUDEDIR}/gssapi CLEANFILES+= gssapi.h ${GGEN} ${GGENI} diff --git a/lib/Makefile b/lib/Makefile index e5139b312a75..9447cc4551c0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -137,7 +137,9 @@ SUBDIR_DEPEND_libdevstat= libkvm SUBDIR_DEPEND_libdpv= libfigpar ncurses libutil SUBDIR_DEPEND_libedit= ncurses SUBDIR_DEPEND_libgeom= libexpat libsbuf +.if ${MK_MITKRB5} == "no" SUBDIR_DEPEND_librpcsec_gss= libgssapi +.endif SUBDIR_DEPEND_libmagic= libz SUBDIR_DEPEND_libmemstat= libkvm SUBDIR_DEPEND_libpam= libcrypt ${_libradius} librpcsvc libtacplus libutil ${_libypclnt} ${_libcom_err} @@ -176,7 +178,10 @@ SUBDIR.${MK_DIALOG}+= libdpv libfigpar SUBDIR.${MK_FDT}+= libfdt SUBDIR.${MK_FILE}+= libmagic SUBDIR.${MK_GPIO}+= libgpio -SUBDIR.${MK_GSSAPI}+= libgssapi librpcsec_gss +.if ${MK_MITKRB5} == "no" +SUBDIR.${MK_GSSAPI}+= libgssapi +.endif +SUBDIR.${MK_GSSAPI}+= librpcsec_gss SUBDIR.${MK_ICONV}+= libiconv_modules .if ${MK_MITKRB5} == "no" SUBDIR.${MK_KERBEROS_SUPPORT}+= libcom_err diff --git a/lib/librpcsec_gss/Makefile b/lib/librpcsec_gss/Makefile index a29d9780c1ab..eebc975acbd2 100644 --- a/lib/librpcsec_gss/Makefile +++ b/lib/librpcsec_gss/Makefile @@ -1,10 +1,16 @@ +.include <src.opts.mk> + PACKAGE=lib${LIB} LIB= rpcsec_gss SHLIB_MAJOR= 1 SRCS+= rpcsec_gss.c rpcsec_gss_prot.c rpcsec_gss_conf.c rpcsec_gss_misc.c \ svc_rpcsec_gss.c +.if ${MK_MITKRB5} == "no" LIBADD= gssapi +.else +LIBADD= gssapi_krb5 +.endif VERSION_DEF= ${SRCTOP}/lib/libc/Versions.def SYMBOL_MAPS= ${.CURDIR}/Symbol.map diff --git a/secure/libexec/sshd-session/Makefile b/secure/libexec/sshd-session/Makefile index 8841cace5239..37e099794bd5 100644 --- a/secure/libexec/sshd-session/Makefile +++ b/secure/libexec/sshd-session/Makefile @@ -39,15 +39,14 @@ LDFLAGS+=-L${LIBBLACKLISTDIR} .endif .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" -LIBADD+= gssapi_krb5 gssapi krb5 .if ${MK_MITKRB5} != "no" +LIBADD+= gssapi_krb5 krb5 .include "../../krb5/Makefile.inc" CFLAGS+= -I${KRB5_DIR}/include \ -I${KRB5_SRCTOP}/include \ - -I${KRB5_OBJTOP}/lib \ - -I${KRB5_DIR}/lib/gssapi/generic \ - -I${KRB5_DIR}/lib/gssapi/krb5 \ - -I${KRB5_DIR}/lib/gssapi/mechglue + -I${KRB5_OBJTOP}/lib +.else +LIBADD+= gssapi_krb5 gssapi krb5 .endif .endif diff --git a/secure/usr.bin/ssh/Makefile b/secure/usr.bin/ssh/Makefile index acb1fd4eaa25..a4f36d0fe2df 100644 --- a/secure/usr.bin/ssh/Makefile +++ b/secure/usr.bin/ssh/Makefile @@ -18,7 +18,11 @@ SRCS+= gss-genr.c LIBADD= ssh .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" +.if ${MK_MITKRB5} == "no" LIBADD+= gssapi +.else +LIBADD+= gssapi_krb5 +.endif .endif LIBADD+= crypto diff --git a/secure/usr.sbin/sshd/Makefile b/secure/usr.sbin/sshd/Makefile index e6913cd9d0d6..f37dfe1c1b3a 100644 --- a/secure/usr.sbin/sshd/Makefile +++ b/secure/usr.sbin/sshd/Makefile @@ -19,7 +19,11 @@ moduli: .MADE LIBADD= ssh util .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no" +.if ${MK_MITKRB5} == "no" LIBADD+= gssapi_krb5 gssapi krb5 +.else +LIBADD+= gssapi_krb5 krb5 +.endif .endif .if ${MK_TCP_WRAPPERS} != "no" diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 283a99496b9f..9ca043e7733c 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -472,7 +472,11 @@ _DP_ncursesw= tinfow _DP_formw= ncursesw _DP_nvpair= spl _DP_panelw= ncursesw +.if ${MK_MITKRB5} == "no" _DP_rpcsec_gss= gssapi +.else +_DP_rpcsec_gss= gssapi_krb5 +.endif _DP_smb= kiconv _DP_ulog= md _DP_fifolog= z diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index aa6d04f1cc43..8e5ac7fa2a63 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -4836,6 +4836,7 @@ OLD_FILES+=usr/share/man/man8/sserver.8.gz .else .if ${MK_MITKRB5} != "no" # Remove Heimdal because we want MIT KRB5 but not Heimdal +OLD_FILES+=etc/gss/qop OLD_FILES+=etc/rc.d/ipropd_master OLD_FILES+=etc/rc.d/ipropd_slave OLD_FILES+=usr/bin/asn1_compile @@ -4921,6 +4922,8 @@ OLD_LIBS+=usr/lib/libasn1.so.11 OLD_FILES+=usr/lib/libasn1_p.a OLD_LIBS+=usr/lib/libcom_err.so.5 OLD_FILES+=usr/lib/libcom_err_p.a +OLD_LIBS+=usr/lib/libgssapi.a +OLD_LIBS+=usr/lib/libgssapi.so.10 OLD_LIBS+=usr/lib/libgssapi_krb5.so.10 OLD_FILES+=usr/lib/libgssapi_krb5_p.a OLD_FILES+=usr/lib/libgssapi_mech.a diff --git a/usr.sbin/gssd/Makefile b/usr.sbin/gssd/Makefile index 569e2c7e18f5..336a1b49f696 100644 --- a/usr.sbin/gssd/Makefile +++ b/usr.sbin/gssd/Makefile @@ -9,15 +9,14 @@ SRCS= gssd.c gssd.h gssd_svc.c gssd_xdr.c gssd_prot.c CFLAGS+= -I. WARNS?= 1 -LIBADD= gssapi .if ${MK_KERBEROS_SUPPORT} != "no" .if ${MK_MITKRB5} != "no" # MIT KRB5 -LIBADD+= krb5 k5crypto krb5profile krb5support +LIBADD+= gssapi_krb5 krb5 k5crypto krb5profile krb5support CFLAGS+= -DMK_MITKRB5=yes .else # Heimdal -LIBADD+= krb5 roken +LIBADD+= gssapi krb5 roken .endif .else CFLAGS+= -DWITHOUT_KERBEROS diff --git a/usr.sbin/gssd/gssd.c b/usr.sbin/gssd/gssd.c index 94eb6ca575c8..2a3af05496cf 100644 --- a/usr.sbin/gssd/gssd.c +++ b/usr.sbin/gssd/gssd.c @@ -53,6 +53,9 @@ #include <arpa/inet.h> #include <netinet/in.h> #include <gssapi/gssapi.h> +#ifdef MK_MITKRB5 +#include <gssapi/gssapi_krb5.h> +#endif #include <rpc/rpc.h> #include <rpc/rpc_com.h>