diff --git a/net/nfs-kernel-server/Makefile b/net/nfs-kernel-server/Makefile index 5933f66500..8c852b92c3 100644 --- a/net/nfs-kernel-server/Makefile +++ b/net/nfs-kernel-server/Makefile @@ -7,11 +7,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=nfs-kernel-server -PKG_VERSION:=2.6.2 -PKG_RELEASE:=4 -PKG_HASH:=26d46448982252e9e2c8346d10cf13e1143e7089c866f53e25db3359f3e9493c +PKG_VERSION:=2.8.2 +PKG_RELEASE:=1 +PKG_HASH:=a39bbea76ac0ab9e6e8699caf3c308b6b310c20d458e8fa8606196d358e7fb15 -PKG_SOURCE_URL:=@SF/nfs +PKG_SOURCE_URL:=@KERNEL/linux/utils/nfs-utils/$(PKG_VERSION) PKG_SOURCE:=nfs-utils-$(PKG_VERSION).tar.xz HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/nfs-utils-$(PKG_VERSION) @@ -32,9 +32,8 @@ define Package/nfs-kernel-server/Default SECTION:=net CATEGORY:=Network SUBMENU:=Filesystem - DEPENDS:=+libblkid +libuuid +libtirpc + DEPENDS:=+libblkid +libuuid +libtirpc +lsqlite3 +libxml2 +libnl URL:=http://nfs.sourceforge.net/ - MAINTAINER:=Peter Wagner endef define Package/nfs-kernel-server @@ -72,7 +71,6 @@ define Package/nfs-utils/Default CATEGORY:=Utilities DEPENDS+= +NFS_KERNEL_SERVER_V4:libkeyutils +NFS_KERNEL_SERVER_V4:libdevmapper URL:=http://nfs.sourceforge.net/ - MAINTAINER:=Peter Wagner endef define Package/nfs-utils @@ -115,7 +113,8 @@ CONFIGURE_ARGS += \ --enable-static \ --with-rpcgen=internal \ $(if $(CONFIG_NFS_KERNEL_SERVER_V4),--enable,--disable)-nfsv4 \ - $(if $(CONFIG_NFS_KERNEL_SERVER_V4),--enable,--disable)-nfsv41 + $(if $(CONFIG_NFS_KERNEL_SERVER_V4),--enable,--disable)-nfsv41 \ + $(if $(CONFIG_NFS_KERNEL_SERVER_V4),--enable,--disable)-nfsv42 ifeq ($(CONFIG_IPV6),n) CONFIGURE_ARGS += --disable-ipv6 @@ -142,7 +141,10 @@ HOST_CONFIGURE_ARGS += \ --disable-gss \ --disable-nfsv4 \ --disable-nfsv41 \ + --disable-nfsrahead \ + --disable-nfsdctl \ --without-tcp-wrappers \ + --disable-junction \ --with-rpcgen=internal HOST_CONFIGURE_VARS += \ @@ -158,6 +160,7 @@ HOST_CONFIGURE_VARS += \ ac_cv_func_getrpcbynumber=yes \ ac_cv_func_getrpcbynumber_r=yes \ enable_ipv6=no \ + enable_nfsdctl=no \ GSSGLUE_CFLAGS=" " \ GSSGLUE_LIBS=" " \ RPCSECGSS_CFLAGS=" " \ diff --git a/net/nfs-kernel-server/patches/100-fix-host-build.patch b/net/nfs-kernel-server/patches/100-fix-host-build.patch new file mode 100644 index 0000000000..b4fffa5d92 --- /dev/null +++ b/net/nfs-kernel-server/patches/100-fix-host-build.patch @@ -0,0 +1,22 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -359,9 +359,6 @@ CPPFLAGS="${nfsutils_save_CPPFLAGS}" + AC_CHECK_HEADER(uuid/uuid.h, , + AC_MSG_ERROR([Cannot find needed header file uuid/uuid.h. Install libuuid-devel])) + +-dnl check for libevent libraries and headers +-AC_LIBEVENT +- + dnl Check for sqlite3 + AC_SQLITE3_VERS + +@@ -441,9 +438,6 @@ if test "$enable_gss" = yes; then + dnl 'gss' requires getnameinfo - at least for gssd_proc.c + AC_CHECK_FUNC([getnameinfo], , [AC_MSG_ERROR([GSSAPI support requires 'getnameinfo' function])]) + +- dnl check for libevent libraries and headers +- AC_LIBEVENT +- + dnl Check for Kerberos V5 + AC_KERBEROS_V5 + diff --git a/net/nfs-kernel-server/patches/130-musl-svcgssd-sysconf.patch b/net/nfs-kernel-server/patches/130-musl-svcgssd-sysconf.patch deleted file mode 100644 index a498e39088..0000000000 --- a/net/nfs-kernel-server/patches/130-musl-svcgssd-sysconf.patch +++ /dev/null @@ -1,144 +0,0 @@ ---- a/support/nfsidmap/libnfsidmap.c -+++ b/support/nfsidmap/libnfsidmap.c -@@ -452,11 +452,17 @@ int nfs4_init_name_mapping(char *conffil - - nobody_user = conf_get_str("Mapping", "Nobody-User"); - if (nobody_user) { -- size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ size_t buflen = 1024; /*value on my gentoo glibc system that has _SC_GETPW_R_SIZE_MAX*/ - struct passwd *buf; - struct passwd *pw = NULL; - int err; - -+ /*sysconf can return -1 when _SC_GETPW_R_SIZE_MAX is not defined, like on musl systems, if cast to size_t this will lead -+ to an integer overflow, which leads to a buffer overflow and crashes svcgssd */ -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - buf = malloc(sizeof(*buf) + buflen); - if (buf) { - err = getpwnam_r(nobody_user, buf, ((char *)buf) + sizeof(*buf), buflen, &pw); -@@ -473,11 +479,17 @@ int nfs4_init_name_mapping(char *conffil - - nobody_group = conf_get_str("Mapping", "Nobody-Group"); - if (nobody_group) { -- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ size_t buflen = 1024; /*value on my gentoo glibc system that has _SC_GETGR_R_SIZE_MAX*/ - struct group *buf; - struct group *gr = NULL; - int err; - -+ /*sysconf can return -1 when _SC_GETGR_R_SIZE_MAX is not defined, like on musl systems, if cast to size_t this will lead -+ to an integer overflow, which leads to a buffer overflow and crashes svcgssd */ -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - buf = malloc(sizeof(*buf) + buflen); - if (buf) { - err = getgrnam_r(nobody_group, buf, ((char *)buf) + sizeof(*buf), buflen, &gr); ---- a/support/nfsidmap/static.c -+++ b/support/nfsidmap/static.c -@@ -98,10 +98,14 @@ static struct passwd *static_getpwnam(co - { - struct passwd *pw; - struct pwbuf *buf; -- size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ size_t buflen = 1024; - char *localname; - int err; - -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - buf = malloc(sizeof(*buf) + buflen); - if (!buf) { - err = ENOMEM; -@@ -149,10 +153,14 @@ static struct group *static_getgrnam(con - { - struct group *gr; - struct grbuf *buf; -- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ size_t buflen = 1024; - char *localgroup; - int err; - -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - buf = malloc(sizeof(*buf) + buflen); - if (!buf) { - err = ENOMEM; ---- a/support/nfsidmap/nss.c -+++ b/support/nfsidmap/nss.c -@@ -91,9 +91,13 @@ static int nss_uid_to_name(uid_t uid, ch - struct passwd *pw = NULL; - struct passwd pwbuf; - char *buf; -- size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ size_t buflen = 1024; - int err = -ENOMEM; - -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - buf = malloc(buflen); - if (!buf) - goto out; -@@ -119,9 +123,13 @@ static int nss_gid_to_name(gid_t gid, ch - struct group *gr = NULL; - struct group grbuf; - char *buf; -- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ size_t buflen = 1024; - int err; - -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; -+ - if (domain == NULL) - domain = get_default_domain(); - -@@ -192,12 +200,13 @@ static struct passwd *nss_getpwnam(const - { - struct passwd *pw; - struct pwbuf *buf; -- size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ size_t buflen = 1024; - char *localname; - int err = ENOMEM; - -- if (buflen > UINT_MAX) -- goto err; -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; - - buf = malloc(sizeof(*buf) + buflen); - if (buf == NULL) -@@ -301,7 +310,8 @@ static int _nss_name_to_gid(char *name, - struct group *gr = NULL; - struct group grbuf; - char *buf, *domain; -- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ long scbuflen = sysconf(_SC_GETGR_R_SIZE_MAX); -+ size_t buflen = 1024; - int err = -EINVAL; - char *localname = NULL; - char *ref_name = NULL; -@@ -327,8 +337,8 @@ static int _nss_name_to_gid(char *name, - } - - err = -ENOMEM; -- if (buflen > UINT_MAX) -- goto out_name; -+ if (scbuflen > 0) -+ buflen = (size_t)scbuflen; - - do { - buf = malloc(buflen); diff --git a/net/nfs-kernel-server/patches/210-patch-for-broken-libnfsimapd-static-and-regex-plugins.patch b/net/nfs-kernel-server/patches/210-patch-for-broken-libnfsimapd-static-and-regex-plugins.patch new file mode 100644 index 0000000000..02cf1d12b9 --- /dev/null +++ b/net/nfs-kernel-server/patches/210-patch-for-broken-libnfsimapd-static-and-regex-plugins.patch @@ -0,0 +1,36 @@ +From e29f6e549b7c42ebdf181bb079020c736fce1311 Mon Sep 17 00:00:00 2001 +From: Joshua Kaldon +Date: Wed, 15 Jan 2025 04:51:03 -0500 +Subject: [PATCH] Patch for broken libnfsimapd static and regex plugins. + +It appears that the makefile does not add nfsidmap_common.c in the +sources. nfs-utils (1:2.8.2-1.1~0.1) UNRELEASED; urgency=medium . +Non-maintainer upload. Fix issue with static and regex plugins +missing symbol get_grnam_buflen. + +Signed-off-by: Steve Dickson +--- + support/nfsidmap/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/support/nfsidmap/Makefile.am ++++ b/support/nfsidmap/Makefile.am +@@ -40,15 +40,15 @@ nsswitch_la_SOURCES = nss.c nfsidmap_com + nsswitch_la_LDFLAGS = -module -avoid-version + nsswitch_la_LIBADD = ../../support/nfs/libnfsconf.la + +-static_la_SOURCES = static.c ++static_la_SOURCES = static.c nfsidmap_common.c + static_la_LDFLAGS = -module -avoid-version + static_la_LIBADD = ../../support/nfs/libnfsconf.la + +-regex_la_SOURCES = regex.c ++regex_la_SOURCES = regex.c nfsidmap_common.c + regex_la_LDFLAGS = -module -avoid-version + regex_la_LIBADD = ../../support/nfs/libnfsconf.la + +-umich_ldap_la_SOURCES = umich_ldap.c ++umich_ldap_la_SOURCES = umich_ldap.c nfsidmap_common.c + umich_ldap_la_LDFLAGS = -module -avoid-version + umich_ldap_la_LIBADD = -lldap $(KRB5_GSS_LIB) ../../support/nfs/libnfsconf.la +