diff --git a/.gitignore b/.gitignore index 4b7a895..1a0073b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ x86_64 Makefile -/rpcbind-1.2.5.tar.bz2 -rpcbind-1.2.5/ +rpcbind-1.2.8-build/ +/rpcbind-1.2.8.tar.bz2 diff --git a/rpcbind-0.2.3-systemd-envfile.patch b/rpcbind-0.2.3-systemd-envfile.patch deleted file mode 100644 index 2bfc248..0000000 --- a/rpcbind-0.2.3-systemd-envfile.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up rpcbind-0.2.4/systemd/rpcbind.service.in.orig rpcbind-0.2.4/systemd/rpcbind.service.in ---- rpcbind-0.2.4/systemd/rpcbind.service.in.orig 2017-12-16 15:49:07.830889473 -0500 -+++ rpcbind-0.2.4/systemd/rpcbind.service.in 2017-12-16 15:49:43.156610673 -0500 -@@ -12,6 +12,7 @@ Wants=rpcbind.target - [Service] - Type=notify - # distro can provide a drop-in adding EnvironmentFile=-/??? if needed. -+EnvironmentFile=/etc/sysconfig/rpcbind - ExecStart=@_sbindir@/rpcbind $RPCBIND_OPTIONS -w -f - - [Install] diff --git a/rpcbind-0.2.3-systemd-tmpfiles.patch b/rpcbind-0.2.3-systemd-tmpfiles.patch index b9a8457..20f57b1 100644 --- a/rpcbind-0.2.3-systemd-tmpfiles.patch +++ b/rpcbind-0.2.3-systemd-tmpfiles.patch @@ -1,7 +1,7 @@ -diff -up rpcbind-1.2.5/configure.ac.orig rpcbind-1.2.5/configure.ac ---- rpcbind-1.2.5/configure.ac.orig 2018-08-15 10:51:19.000000000 -0400 -+++ rpcbind-1.2.5/configure.ac 2018-08-15 11:14:23.933946110 -0400 -@@ -56,6 +56,17 @@ AC_ARG_WITH([systemdsystemunitdir], +diff -up rpcbind-1.2.7/configure.ac.orig rpcbind-1.2.7/configure.ac +--- rpcbind-1.2.7/configure.ac.orig 2024-07-25 11:55:23.000000000 -0400 ++++ rpcbind-1.2.7/configure.ac 2024-07-25 16:55:38.334208493 -0400 +@@ -73,6 +73,17 @@ AC_ARG_WITH([systemdsystemunitdir], fi AM_CONDITIONAL(SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ]) @@ -19,9 +19,9 @@ diff -up rpcbind-1.2.5/configure.ac.orig rpcbind-1.2.5/configure.ac AS_IF([test x$enable_libwrap = xyes], [ AC_CHECK_LIB([wrap], [hosts_access], , AC_MSG_ERROR([libwrap support requested but unable to find libwrap])) -diff -up rpcbind-1.2.5/Makefile.am.orig rpcbind-1.2.5/Makefile.am ---- rpcbind-1.2.5/Makefile.am.orig 2018-08-15 10:51:19.000000000 -0400 -+++ rpcbind-1.2.5/Makefile.am 2018-08-15 11:14:23.934946111 -0400 +diff -up rpcbind-1.2.7/Makefile.am.orig rpcbind-1.2.7/Makefile.am +--- rpcbind-1.2.7/Makefile.am.orig 2024-07-25 11:55:23.000000000 -0400 ++++ rpcbind-1.2.7/Makefile.am 2024-07-25 16:55:38.335208500 -0400 @@ -59,6 +59,9 @@ rpcbind_LDADD += $(SYSTEMD_LIBS) systemdsystemunit_DATA = \ systemd/rpcbind.service \ @@ -32,9 +32,9 @@ diff -up rpcbind-1.2.5/Makefile.am.orig rpcbind-1.2.5/Makefile.am endif rpcinfo_SOURCES = src/rpcinfo.c -diff -up rpcbind-1.2.5/systemd/rpcbind.conf.orig rpcbind-1.2.5/systemd/rpcbind.conf ---- rpcbind-1.2.5/systemd/rpcbind.conf.orig 2018-08-15 11:14:23.934946111 -0400 -+++ rpcbind-1.2.5/systemd/rpcbind.conf 2018-08-15 11:14:23.934946111 -0400 +diff -up rpcbind-1.2.7/systemd/rpcbind.conf.orig rpcbind-1.2.7/systemd/rpcbind.conf +--- rpcbind-1.2.7/systemd/rpcbind.conf.orig 2024-07-25 16:55:38.335208500 -0400 ++++ rpcbind-1.2.7/systemd/rpcbind.conf 2024-07-25 16:55:38.335208500 -0400 @@ -0,0 +1,2 @@ +#Type Path Mode UID GID Age Argument +D /run/rpcbind 0700 rpc rpc - - diff --git a/rpcbind-0.2.4-runstatdir.patch b/rpcbind-0.2.4-runstatdir.patch deleted file mode 100644 index 90c1dae..0000000 --- a/rpcbind-0.2.4-runstatdir.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff -up rpcbind-1.2.5/configure.ac.orig rpcbind-1.2.5/configure.ac ---- rpcbind-1.2.5/configure.ac.orig 2018-08-15 11:15:14.188974027 -0400 -+++ rpcbind-1.2.5/configure.ac 2018-08-15 11:15:44.948991114 -0400 -@@ -26,8 +26,8 @@ AC_ARG_ENABLE([rmtcalls], - AM_CONDITIONAL(RMTCALLS, test x$enable_rmtcalls = xyes) - - AC_ARG_WITH([statedir], -- AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/var/run/rpcbind@:>@]) -- ,, [with_statedir=/var/run/rpcbind]) -+ AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/run/rpcbind@:>@]) -+ ,, [with_statedir=/run/rpcbind]) - AC_SUBST([statedir], [$with_statedir]) - - AC_ARG_WITH([rpcuser], -diff -up rpcbind-1.2.5/configure.orig rpcbind-1.2.5/configure ---- rpcbind-1.2.5/configure.orig 2018-08-15 11:00:32.000000000 -0400 -+++ rpcbind-1.2.5/configure 2018-08-15 11:15:44.951991115 -0400 -@@ -1391,7 +1391,7 @@ Optional Features: - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -- --with-statedir=ARG use ARG as state dir [default=/var/run/rpcbind] -+ --with-statedir=ARG use ARG as state dir [default=/run/rpcbind] - - --with-rpcuser=ARG use ARG for RPC [default=root] - -@@ -3901,7 +3901,7 @@ fi - if test "${with_statedir+set}" = set; then : - withval=$with_statedir; - else -- with_statedir=/var/run/rpcbind -+ with_statedir=/run/rpcbind - fi - - statedir=$with_statedir -diff -up rpcbind-1.2.5/man/rpcbind-fr.8.orig rpcbind-1.2.5/man/rpcbind-fr.8 ---- rpcbind-1.2.5/man/rpcbind-fr.8.orig 2018-08-15 10:51:19.000000000 -0400 -+++ rpcbind-1.2.5/man/rpcbind-fr.8 2018-08-15 11:15:44.951991115 -0400 -@@ -138,8 +138,8 @@ est redémarré. - .Xr rpcbind 3 , - .Xr rpcinfo 8 - .Sh FILES --.Bl -tag -width /var/run/rpcbind.sock -compact --.It Pa /var/run/rpcbind.sock -+.Bl -tag -width /run/rpcbind.sock -compact -+.It Pa /run/rpcbind.sock - .Sh TRADUCTION - Aurelien CHARBON (Sept 2003) - .El -diff -up rpcbind-1.2.5/src/rpcbind.c.orig rpcbind-1.2.5/src/rpcbind.c ---- rpcbind-1.2.5/src/rpcbind.c.orig 2018-08-15 10:51:19.000000000 -0400 -+++ rpcbind-1.2.5/src/rpcbind.c 2018-08-15 11:15:44.952991116 -0400 -@@ -106,7 +106,7 @@ char *nss_modules = "files"; - /* who to suid to if -s is given */ - #define RUN_AS "daemon" - --#define RPCBINDDLOCK "/var/run/rpcbind.lock" -+#define RPCBINDDLOCK RPCBIND_STATEDIR "/rpcbind.lock" - - int runasdaemon = 0; - int insecure = 0; diff --git a/rpcbind-0.2.4-systemd-rundir.patch b/rpcbind-0.2.4-systemd-rundir.patch index da08d7a..ffecb53 100644 --- a/rpcbind-0.2.4-systemd-rundir.patch +++ b/rpcbind-0.2.4-systemd-rundir.patch @@ -1,16 +1,16 @@ -diff -up rpcbind-0.2.4/src/rpcbind.c.orig rpcbind-0.2.4/src/rpcbind.c ---- rpcbind-0.2.4/src/rpcbind.c.orig 2017-03-21 10:12:35.005190509 -0400 -+++ rpcbind-0.2.4/src/rpcbind.c 2017-03-21 10:36:45.510507649 -0400 -@@ -144,6 +144,8 @@ static void rbllist_add(rpcprog_t, rpcve - static void terminate(int); - static void parseargs(int, char *[]); +diff -up rpcbind-1.2.8/src/rpcbind.c.orig rpcbind-1.2.8/src/rpcbind.c +--- rpcbind-1.2.8/src/rpcbind.c.orig 2025-07-26 16:57:24.000000000 -0400 ++++ rpcbind-1.2.8/src/rpcbind.c 2025-07-26 17:15:51.933467872 -0400 +@@ -214,6 +214,8 @@ static void version() + fprintf(stderr, "\n"); + } +char *systemdtmp = "/usr/bin/systemd-tmpfiles --create rpcbind.conf"; + int main(int argc, char *argv[]) { -@@ -151,13 +153,21 @@ main(int argc, char *argv[]) +@@ -221,13 +223,21 @@ main(int argc, char *argv[]) void *nc_handle; /* Net config handle */ struct rlimit rl; int maxrec = RPC_MAXDATASIZE; diff --git a/rpcbind-0.2.4-systemd-service.patch b/rpcbind-0.2.4-systemd-service.patch deleted file mode 100644 index 0350020..0000000 --- a/rpcbind-0.2.4-systemd-service.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up rpcbind-0.2.4/systemd/rpcbind.service.in.orig rpcbind-0.2.4/systemd/rpcbind.service.in ---- rpcbind-0.2.4/systemd/rpcbind.service.in.orig 2017-12-16 15:46:12.896270101 -0500 -+++ rpcbind-0.2.4/systemd/rpcbind.service.in 2017-12-16 15:46:43.672027210 -0500 -@@ -7,7 +7,8 @@ RequiresMountsFor=@statedir@ - # Make sure we use the IP addresses listed for - # rpcbind.socket, no matter how this unit is started. - Requires=rpcbind.socket --Wants=rpcbind.target -+Wants=rpcbind.target systemd-tmpfiles-setup.service -+After=systemd-tmpfiles-setup.service - - [Service] - Type=notify diff --git a/rpcbind-0.2.5-rc1.patch b/rpcbind-0.2.5-rc1.patch deleted file mode 100644 index 6dbfff3..0000000 --- a/rpcbind-0.2.5-rc1.patch +++ /dev/null @@ -1,185 +0,0 @@ -diff --git a/src/pmap_svc.c b/src/pmap_svc.c -index 4c744fe..e926cdc 100644 ---- a/src/pmap_svc.c -+++ b/src/pmap_svc.c -@@ -175,6 +175,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - long ans; - uid_t uid; - char uidbuf[32]; -+ int rc = TRUE; - - /* - * Can't use getpwnam here. We might end up calling ourselves -@@ -194,7 +195,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - #ifdef RPCBIND_DEBUG - if (debugging) -@@ -205,7 +207,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - - if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) { - svcerr_weakauth(xprt); -- return (FALSE); -+ rc = (FALSE); -+ goto done; - } - - rpcbreg.r_prog = reg.pm_prog; -@@ -258,7 +261,16 @@ done_change: - rpcbs_set(RPCBVERS_2_STAT, ans); - else - rpcbs_unset(RPCBVERS_2_STAT, ans); -- return (TRUE); -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+ } -+ return (rc); - } - - /* ARGSUSED */ -@@ -272,15 +284,18 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - #ifdef RPCBIND_DEBUG - char *uaddr; - #endif -+ int rc = TRUE; - - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - - if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) { - svcerr_weakauth(xprt); -- return FALSE; -+ rc = FALSE; -+ goto done; - } - - #ifdef RPCBIND_DEBUG -@@ -330,21 +345,34 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - pmap_ipprot2netid(reg.pm_prot) ?: "", - port ? udptrans : ""); - -- return (TRUE); -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+ } -+ return (rc); - } - - /* ARGSUSED */ - static bool_t - pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - { -+ int rc = TRUE; -+ - if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - - if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) { - svcerr_weakauth(xprt); -- return FALSE; -+ rc = FALSE; -+ goto done; - } - - if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr, -@@ -354,7 +382,17 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - rpcbind_abort(); - } - } -- return (TRUE); -+ -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_void, (char *)NULL)) { -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+ } -+ return (rc); - } - - int pmap_netid2ipprot(const char *netid) -diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c -index 709e3fb..091f530 100644 ---- a/src/rpcb_svc.c -+++ b/src/rpcb_svc.c -@@ -166,7 +166,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) - svcerr_decode(transp); - if (debugging) - (void) xlog(LOG_DEBUG, "rpcbind: could not decode"); -- return; -+ goto done; - } - - if (rqstp->rq_proc == RPCBPROC_SET -diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c -index 5094879..eebbbbe 100644 ---- a/src/rpcb_svc_4.c -+++ b/src/rpcb_svc_4.c -@@ -218,7 +218,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) - svcerr_decode(transp); - if (debugging) - (void) xlog(LOG_DEBUG, "rpcbind: could not decode\n"); -- return; -+ goto done; - } - - if (rqstp->rq_proc == RPCBPROC_SET -diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c -index 5862c26..cb63afd 100644 ---- a/src/rpcb_svc_com.c -+++ b/src/rpcb_svc_com.c -@@ -927,6 +927,14 @@ error: - if (call_msg.rm_xid != 0) - (void) free_slot_by_xid(call_msg.rm_xid); - out: -+ if (!svc_freeargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+ } - if (local_uaddr) - free(local_uaddr); - if (buf_alloc) -diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in -index e7e86da..03a9e0b 100644 ---- a/systemd/rpcbind.service.in -+++ b/systemd/rpcbind.service.in -@@ -2,6 +2,7 @@ - Description=RPC Bind - Documentation=man:rpcbind(8) - DefaultDependencies=no -+RequiresMountsFor=@statedir@ - - # Make sure we use the IP addresses listed for - # rpcbind.socket, no matter how this unit is started. diff --git a/rpcbind-0.2.5-rc2.patch b/rpcbind-0.2.5-rc2.patch deleted file mode 100644 index bf89442..0000000 --- a/rpcbind-0.2.5-rc2.patch +++ /dev/null @@ -1,310 +0,0 @@ -diff --git a/src/pmap_svc.c b/src/pmap_svc.c -index 4c744fe..a53dd5f 100644 ---- a/src/pmap_svc.c -+++ b/src/pmap_svc.c -@@ -175,6 +175,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - long ans; - uid_t uid; - char uidbuf[32]; -+ int rc = TRUE; - - /* - * Can't use getpwnam here. We might end up calling ourselves -@@ -194,7 +195,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - #ifdef RPCBIND_DEBUG - if (debugging) -@@ -205,7 +207,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long - - if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) { - svcerr_weakauth(xprt); -- return (FALSE); -+ rc = (FALSE); -+ goto done; - } - - rpcbreg.r_prog = reg.pm_prog; -@@ -258,7 +261,18 @@ done_change: - rpcbs_set(RPCBVERS_2_STAT, ans); - else - rpcbs_unset(RPCBVERS_2_STAT, ans); -- return (TRUE); -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { -+#ifdef RPCBIND_DEBUG -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+#endif -+ } -+ return (rc); - } - - /* ARGSUSED */ -@@ -272,15 +286,18 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - #ifdef RPCBIND_DEBUG - char *uaddr; - #endif -+ int rc = TRUE; - - if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - - if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) { - svcerr_weakauth(xprt); -- return FALSE; -+ rc = FALSE; -+ goto done; - } - - #ifdef RPCBIND_DEBUG -@@ -330,21 +347,36 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - pmap_ipprot2netid(reg.pm_prot) ?: "", - port ? udptrans : ""); - -- return (TRUE); -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { -+#ifdef RPCBIND_DEBUG -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+#endif -+ } -+ return (rc); - } - - /* ARGSUSED */ - static bool_t - pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - { -+ int rc = TRUE; -+ - if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) { - svcerr_decode(xprt); -- return (FALSE); -+ rc = FALSE; -+ goto done; - } - - if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) { - svcerr_weakauth(xprt); -- return FALSE; -+ rc = FALSE; -+ goto done; - } - - if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr, -@@ -354,7 +386,19 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) - rpcbind_abort(); - } - } -- return (TRUE); -+ -+done: -+ if (!svc_freeargs(xprt, (xdrproc_t) xdr_void, (char *)NULL)) { -+#ifdef RPCBIND_DEBUG -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+#endif -+ } -+ return (rc); - } - - int pmap_netid2ipprot(const char *netid) -diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c -index 709e3fb..091f530 100644 ---- a/src/rpcb_svc.c -+++ b/src/rpcb_svc.c -@@ -166,7 +166,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) - svcerr_decode(transp); - if (debugging) - (void) xlog(LOG_DEBUG, "rpcbind: could not decode"); -- return; -+ goto done; - } - - if (rqstp->rq_proc == RPCBPROC_SET -diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c -index 5094879..eebbbbe 100644 ---- a/src/rpcb_svc_4.c -+++ b/src/rpcb_svc_4.c -@@ -218,7 +218,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) - svcerr_decode(transp); - if (debugging) - (void) xlog(LOG_DEBUG, "rpcbind: could not decode\n"); -- return; -+ goto done; - } - - if (rqstp->rq_proc == RPCBPROC_SET -diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c -index 5862c26..d36b090 100644 ---- a/src/rpcb_svc_com.c -+++ b/src/rpcb_svc_com.c -@@ -612,9 +612,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - struct netconfig *nconf; - struct netbuf *caller; - struct r_rmtcall_args a; -- char *buf_alloc = NULL, *outbufp; -- char *outbuf_alloc = NULL; -- char buf[RPC_BUF_MAX], outbuf[RPC_BUF_MAX]; -+ char outbuf[RPC_BUF_MAX]; - struct netbuf *na = (struct netbuf *) NULL; - struct rpc_msg call_msg; - int outlen; -@@ -635,36 +633,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - } - if (si.si_socktype != SOCK_DGRAM) - return; /* Only datagram type accepted */ -- sendsz = __rpc_get_t_size(si.si_af, si.si_proto, UDPMSGSIZE); -- if (sendsz == 0) { /* data transfer not supported */ -- if (reply_type == RPCBPROC_INDIRECT) -- svcerr_systemerr(transp); -- return; -- } -- /* -- * Should be multiple of 4 for XDR. -- */ -- sendsz = ((sendsz + 3) / 4) * 4; -- if (sendsz > RPC_BUF_MAX) { --#ifdef notyet -- buf_alloc = alloca(sendsz); /* not in IDR2? */ --#else -- buf_alloc = malloc(sendsz); --#endif /* notyet */ -- if (buf_alloc == NULL) { -- if (debugging) -- xlog(LOG_DEBUG, -- "rpcbproc_callit_com: No Memory!\n"); -- if (reply_type == RPCBPROC_INDIRECT) -- svcerr_systemerr(transp); -- return; -- } -- a.rmt_args.args = buf_alloc; -- } else { -- a.rmt_args.args = buf; -- } -+ sendsz = UDPMSGSIZE; - - call_msg.rm_xid = 0; /* For error checking purposes */ -+ memset(&a, 0, sizeof(a)); /* Zero out the input buffer */ - if (!svc_getargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { - if (reply_type == RPCBPROC_INDIRECT) - svcerr_decode(transp); -@@ -700,11 +672,11 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - - rpcbs_rmtcall(versnum - 2, reply_type, a.rmt_prog, a.rmt_vers, - a.rmt_proc, transp->xp_netid, rbl); -- - if (rbl == (rpcblist_ptr)NULL) { - #ifdef RPCBIND_DEBUG - if (debugging) -- xlog(LOG_DEBUG, "not found\n"); -+ xlog(LOG_DEBUG, "prog %lu vers %lu: not found\n", -+ a.rmt_prog, a.rmt_vers); - #endif - if (reply_type == RPCBPROC_INDIRECT) - svcerr_noprog(transp); -@@ -818,24 +790,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - call_msg.rm_call.cb_rpcvers = RPC_MSG_VERSION; - call_msg.rm_call.cb_prog = a.rmt_prog; - call_msg.rm_call.cb_vers = a.rmt_vers; -- if (sendsz > RPC_BUF_MAX) { --#ifdef notyet -- outbuf_alloc = alloca(sendsz); /* not in IDR2? */ --#else -- outbuf_alloc = malloc(sendsz); --#endif /* notyet */ -- if (outbuf_alloc == NULL) { -- if (reply_type == RPCBPROC_INDIRECT) -- svcerr_systemerr(transp); -- if (debugging) -- xlog(LOG_DEBUG, -- "rpcbproc_callit_com: No memory!\n"); -- goto error; -- } -- xdrmem_create(&outxdr, outbuf_alloc, sendsz, XDR_ENCODE); -- } else { -- xdrmem_create(&outxdr, outbuf, sendsz, XDR_ENCODE); -- } -+ -+ memset(outbuf, '\0', sendsz); /* Zero out the output buffer */ -+ xdrmem_create(&outxdr, outbuf, sendsz, XDR_ENCODE); -+ - if (!xdr_callhdr(&outxdr, &call_msg)) { - if (reply_type == RPCBPROC_INDIRECT) - svcerr_systemerr(transp); -@@ -900,10 +858,6 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - goto error; - } - outlen = (int) XDR_GETPOS(&outxdr); -- if (outbuf_alloc) -- outbufp = outbuf_alloc; -- else -- outbufp = outbuf; - - na = uaddr2taddr(nconf, local_uaddr); - if (!na) { -@@ -912,7 +866,7 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, - goto error; - } - -- if (sendto(fd, outbufp, outlen, 0, (struct sockaddr *)na->buf, na->len) -+ if (sendto(fd, outbuf, outlen, 0, (struct sockaddr *)na->buf, na->len) - != outlen) { - if (debugging) - xlog(LOG_DEBUG, -@@ -927,12 +881,16 @@ error: - if (call_msg.rm_xid != 0) - (void) free_slot_by_xid(call_msg.rm_xid); - out: -+ if (!svc_freeargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { -+ if (debugging) { -+ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); -+ if (doabort) { -+ rpcbind_abort(); -+ } -+ } -+ } - if (local_uaddr) - free(local_uaddr); -- if (buf_alloc) -- free(buf_alloc); -- if (outbuf_alloc) -- free(outbuf_alloc); - if (na) { - free(na->buf); - free(na); -diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in -index e7e86da..03a9e0b 100644 ---- a/systemd/rpcbind.service.in -+++ b/systemd/rpcbind.service.in -@@ -2,6 +2,7 @@ - Description=RPC Bind - Documentation=man:rpcbind(8) - DefaultDependencies=no -+RequiresMountsFor=@statedir@ - - # Make sure we use the IP addresses listed for - # rpcbind.socket, no matter how this unit is started. diff --git a/rpcbind.spec b/rpcbind.spec index b78e10e..0676bb2 100644 --- a/rpcbind.spec +++ b/rpcbind.spec @@ -3,50 +3,53 @@ %global rpcbind_state_dir %{_rundir}/rpcbind Name: rpcbind -Version: 1.2.5 -Release: 4%{?dist} +Version: 1.2.8 +Release: 0%{?dist} Summary: Universal Addresses to RPC Program Number Mapper -License: BSD +License: BSD-3-Clause URL: http://nfsv4.bullopensource.org Source0: http://downloads.sourceforge.net/rpcbind/%{name}-%{version}.tar.bz2 Source1: %{name}.sysconfig Requires: glibc-common setup +Requires: libtirpc >= 1.3.5 Conflicts: man-pages < 2.43-12 +BuildRequires: make BuildRequires: automake, autoconf, libtool, systemd, systemd-devel BuildRequires: libtirpc-devel, quota-devel -Requires(pre): coreutils shadow-utils +Requires(pre): coreutils Requires(post): systemd Requires(preun): systemd Requires(postun): systemd coreutils -Patch001: rpcbind-1.2.5-rpcinfo-bufoverflow.patch - -Patch100: rpcbind-0.2.3-systemd-envfile.patch -Patch101: rpcbind-0.2.3-systemd-tmpfiles.patch -Patch102: rpcbind-0.2.4-runstatdir.patch -Patch103: rpcbind-0.2.4-systemd-service.patch -Patch104: rpcbind-0.2.4-systemd-rundir.patch +Patch100: rpcbind-0.2.3-systemd-tmpfiles.patch +Patch101: rpcbind-0.2.4-systemd-rundir.patch Provides: portmap = %{version}-%{release} Obsoletes: portmap <= 4.0-65.3 +%if "%{_sbindir}" == "%{_bindir}" +# Compat symlinks for Requires in other packages. +# We rely on filesystem to create the symlinks for us. +Requires: filesystem(unmerged-sbin-symlinks) +Provides: /usr/sbin/rpcbind +Provides: /usr/sbin/rpcinfo +%endif + %description The rpcbind utility is a server that converts RPC program numbers into universal addresses. It must be running on the host to be able to make RPC calls on a server on that machine. %prep -%setup -q -# 1637562 - rpcinfo: Fix stack buffer overflow -%patch001 -p1 +%autosetup -p1 + +# Create a sysusers.d config file +cat >rpcbind.sysusers.conf </dev/null || groupadd -f -g 32 -r rpc -if ! getent passwd rpc >/dev/null ; then - if ! getent passwd 32 >/dev/null ; then - useradd -l -c "Rpcbind Daemon" -d /var/lib/rpcbind \ - -g rpc -M -s /sbin/nologin -o -u 32 rpc > /dev/null 2>&1 - else - useradd -l -c "Rpcbind Daemon" -d /var/lib/rpcbind \ - -g rpc -M -s /sbin/nologin rpc > /dev/null 2>&1 - fi -fi +install -m0644 -D rpcbind.sysusers.conf %{buildroot}%{_sysusersdir}/rpcbind.conf %post %systemd_post rpcbind.service rpcbind.socket @@ -96,15 +89,16 @@ fi %preun %systemd_preun rpcbind.service rpcbind.socket +# NOTE: We only restart rpcbind.socket in the %postun scriptlet in order to +# avoid the race described in: +# +# https://github.com/systemd/systemd/issues/13271 +# https://github.com/systemd/systemd/issues/8102 +# +# Restarting rpcbind.socket causes rpcbind.service to be restarted automatically +# due to "Requires=rpcbind.socket" in the rpcbind.service unit file. %postun -%systemd_postun_with_restart rpcbind.service rpcbind.socket - -%triggerin -- rpcbind > 0.2.2-2.0 -if systemctl -q is-enabled rpcbind.socket -then - /bin/systemctl reenable rpcbind.socket >/dev/null 2>&1 || : - /bin/systemctl restart rpcbind.socket >/dev/null 2>&1 || : -fi +%systemd_postun_with_restart rpcbind.socket %files %license COPYING @@ -112,15 +106,111 @@ fi %doc AUTHORS ChangeLog README %{_bindir}/rpcbind %{_bindir}/rpcinfo +%if "%{_sbindir}" != "%{_bindir}" %{_sbindir}/rpcbind %{_sbindir}/rpcinfo +%endif %{_mandir}/man8/* %{_unitdir}/%{name}.service %{_unitdir}/%{name}.socket %{_tmpfilesdir}/%{name}.conf %attr(0700, %{rpcbind_user_group}, %{rpcbind_user_group}) %dir %{rpcbind_state_dir} +%{_sysusersdir}/rpcbind.conf %changelog +* Sat Jul 26 2025 Steve Dickson 1.2.8-0 +- Updated to latest upstream release: rpcbind-1_2_8 (bz 2300081) + +* Fri Jul 25 2025 Fedora Release Engineering - 1.2.7-2.rc1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed May 7 2025 Scott Mayhew - 1.2.7-2.rc1 +- Fix rpm scriptlets to remove excessive restarts during upgrade + +* Wed Jan 29 2025 Zbigniew JÄ™drzejewski-Szmek - 1.2.7-1.rc1.4 +- Add sysusers.d config file to allow rpm to create users/groups automatically + +* Sat Jan 18 2025 Fedora Release Engineering - 1.2.7-1.rc1.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Tue Jan 14 2025 Panu Matilainen - 1.2.7-1.rc1.2 +- Add provides for the manually created rpc user and group + +* Sun Jan 12 2025 Zbigniew JÄ™drzejewski-Szmek - 1.2.7-1.rc1.1 +- Rebuilt for the bin-sbin merge (2nd attempt) + +* Mon Sep 9 2024 Steve Dickson 1.2.8-rc1 +- Updated to latest upstream RC release: rpcbind-1_2_8-rc1 + +* Tue Aug 13 2024 Steve Dickson 1.2.7-1 +- Added Requirement for libtirpc (bz 2304327) + +* Thu Jul 25 2024 Steve Dickson 1.2.7-0 +- Updated to latest upstream release: rpcbind-1_2_7 + +* Fri Jul 19 2024 Fedora Release Engineering - 1.2.6-5.rc3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Apr 11 2024 Zbigniew JÄ™drzejewski-Szmek - 1.2.6-5.rc3 +- Prepare for bin-sbin merge + (https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin) + +* Mon Mar 18 2024 Steve Dickson 1.2.6-4.rc3 +- Updated to latest upstream RC release: rpcbind-1_2_7-rc3 + +* Fri Jan 26 2024 Fedora Release Engineering - 1.2.6-4.rc2.4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 1.2.6-4.rc2.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Oct 16 2023 Pavel Reichl - 1.2.6-4.rc2.2 +- Convert License tag to SPDX format + +* Fri Jul 21 2023 Fedora Release Engineering - 1.2.6-4.rc2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Feb 28 2023 Steve Dickson 1.2.6-4.rc2 +- Updated to latest upstream RC release: rpcbind-1_2_7-rc2 + +* Fri Jan 20 2023 Fedora Release Engineering - 1.2.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 1.2.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Jan 21 2022 Fedora Release Engineering - 1.2.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 1.2.6-1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon May 17 2021 Steve Dickson 1.2.6-0 +- Updated to latest upstream release: rpcbind-1_2_6 (bz 1959127) + +* Tue Mar 02 2021 Zbigniew JÄ™drzejewski-Szmek - 1.2.5-5.rc1.5 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Wed Jan 27 2021 Fedora Release Engineering - 1.2.5-5.rc1.4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 1.2.5-5.rc1.3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 1.2.5-5.rc1.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jan 30 2020 Fedora Release Engineering - 1.2.5-5.rc1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Nov 11 2019 Steve Dickson - 1.2.5-5.rc1 +- Updated to latest upstream RC release: rpcbind-1_2_5-rc1 (bz 1431574) + +* Thu Sep 19 2019 Steve Dickson - 1.2.5-5 +- Enable remote calls which are used by NIS and other packages (bz 1630672) + * Fri Jul 26 2019 Fedora Release Engineering - 1.2.5-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/sources b/sources index 12c7885..26c4f09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rpcbind-1.2.5.tar.bz2) = e884c4757950ccead0f9a07f50625a63e6f18f9bfae9fcfffa3e5fa4b7a66c3a99d9fa303061848fe8211509d5456f24ff26e4579af6e161a35522268f3ef3e4 +SHA512 (rpcbind-1.2.8.tar.bz2) = 66f3955a67c4d0142ec635614ceafbc9bdbea985f2edaeec903f17efaf3c2e98f6483e8e6b7f1358cf8d2c1c877b281d153a3bf1b6748b6d259ae7ad1465ee71