diff --git a/backport-debian-enable-rmt-calls-with-r.patch b/backport-debian-enable-rmt-calls-with-r.patch new file mode 100644 index 0000000..6a6feec --- /dev/null +++ b/backport-debian-enable-rmt-calls-with-r.patch @@ -0,0 +1,139 @@ +Description: Add command line option to enable remote calls at runtime +instead build time +Author: Josue Ortega +Last-Update: 2019-09-17 + +Conflict:NA +Reference:https://sources.debian.org/data/main/r/rpcbind/1.2.5-9/debian/patches/00-rmt-calls.patch + +--- + Makefile.am | 4 ---- + configure.ac | 4 ---- + man/rpcbind.8 | 7 ++++++- + src/rpcbind.c | 18 +++++++++++------- + 4 files changed, 17 insertions(+), 16 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index bcdd69f..3efe198 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -29,10 +29,6 @@ if LIBWRAP + AM_CPPFLAGS += -DLIBWRAP + endif + +-if RMTCALLS +-AM_CPPFLAGS += -DRMTCALLS +-endif +- + bin_PROGRAMS = rpcinfo + sbin_PROGRAMS = rpcbind + +diff --git a/configure.ac b/configure.ac +index d2a0352..1402ff4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -21,10 +21,6 @@ AC_ARG_ENABLE([warmstarts], + AS_HELP_STRING([--enable-warmstarts], [Enables Warm Starts @<:@default=no@:>@])) + AM_CONDITIONAL(WARMSTART, test x$enable_warmstarts = xyes) + +-AC_ARG_ENABLE([rmtcalls], +- AS_HELP_STRING([--enable-rmtcalls], [Enables Remote Calls @<:@default=no@:>@])) +-AM_CONDITIONAL(RMTCALLS, test x$enable_rmtcalls = xyes) +- + AC_ARG_WITH([statedir], + AS_HELP_STRING([--with-statedir=ARG], [use ARG as state dir @<:@default=/run/rpcbind@:>@]) + ,, [with_statedir=/run/rpcbind]) +diff --git a/man/rpcbind.8 b/man/rpcbind.8 +index fbf0ace..2efd0e4 100644 +--- a/man/rpcbind.8 ++++ b/man/rpcbind.8 +@@ -11,7 +11,7 @@ + .Nd universal addresses to RPC program number mapper + .Sh SYNOPSIS + .Nm +-.Op Fl adhiLls ++.Op Fl adhiLlsr + .Sh DESCRIPTION + The + .Nm +@@ -149,6 +149,11 @@ to do a "warm start" by read a state file when + starts up. The state file is created when + .Nm + terminates. ++.It Fl r ++Turn on remote calls. Cause ++.Nm ++to open up random listening ports. Note that rpcinfo need this feature turned on ++for work properly. (This flag is a Debian extension.) + .El + .Sh NOTES + All RPC servers must be restarted if +diff --git a/src/rpcbind.c b/src/rpcbind.c +index 24f42f8..3223eda 100644 +--- a/src/rpcbind.c ++++ b/src/rpcbind.c +@@ -87,6 +87,7 @@ int debugging = 0; /* Tell me what's going on */ + int doabort = 0; /* When debugging, do an abort on errors */ + int dofork = 1; /* fork? */ + int createdsocket = 0; /* Did I create the socket or systemd did it for me? */ ++int rmtcalls = 0; /* Remote calls */ + + rpcblist_ptr list_rbl; /* A list of version 3/4 rpcbind services */ + +@@ -807,12 +808,12 @@ got_socket: + #endif + + +-#ifdef RMTCALLS ++ if (rmtcalls) { + /* + * rmtcall only supported on CLTS transports for now. + */ +- if (nconf->nc_semantics == NC_TPI_CLTS) { +- status = create_rmtcall_fd(nconf); ++ if (nconf->nc_semantics == NC_TPI_CLTS) { ++ status = create_rmtcall_fd(nconf); + #ifdef RPCBIND_DEBUG + if (debugging) { + if (status < 0) { +@@ -825,8 +826,8 @@ got_socket: + } + } + #endif +- } +-#endif ++ } ++ } + + if (res != NULL) + freeaddrinfo(res); +@@ -896,7 +897,7 @@ parseargs(int argc, char *argv[]) + { + int c; + oldstyle_local = 1; +- while ((c = getopt(argc, argv, "adh:ilswf")) != -1) { ++ while ((c = getopt(argc, argv, "adh:ilswfr")) != -1) { + switch (c) { + case 'a': + doabort = 1; /* when debugging, do an abort on */ +@@ -926,13 +927,16 @@ parseargs(int argc, char *argv[]) + case 'f': + dofork = 0; + break; ++ case 'r': ++ rmtcalls = 1; ++ break; + #ifdef WARMSTART + case 'w': + warmstart = 1; + break; + #endif + default: /* error */ +- fprintf(stderr, "usage: rpcbind [-adhilswf]\n"); ++ fprintf(stderr, "usage: rpcbind [-adhilswfr]\n"); + exit (1); + } + } +-- +2.23.0 + diff --git a/rpcbind.spec b/rpcbind.spec index f1b47b3..343aef1 100644 --- a/rpcbind.spec +++ b/rpcbind.spec @@ -3,7 +3,7 @@ Name: rpcbind Version: 1.2.6 -Release: 3 +Release: 4 Summary: Universal addresses to RPC program number mapper License: BSD @@ -28,6 +28,7 @@ Patch104: %{name}-0.2.4-systemd-rundir.patch Patch105: bugfix-rpcbind-GETADDR-return-client-ip.patch Patch6001: CVE-2017-8779.patch Patch6002: backport-fix-double-free-in-init_transport.patch +Patch6003: backport-debian-enable-rmt-calls-with-r.patch Patch9000: bugfix-listen-tcp-port-111.patch Provides: portmap = %{version}-%{release} @@ -117,6 +118,12 @@ fi %{_mandir}/man8/*.8.gz %changelog +* Wed Mar 30 2022 kircher - 1.2.6-4 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:enable rmt-calls with -r + * Mon Feb 28 2022 quanhongfei - 1.2.6-3 - Type:bugfix - Id:NA diff --git a/rpcbind.sysconfig b/rpcbind.sysconfig index 4b35e37..ed3f3b7 100644 --- a/rpcbind.sysconfig +++ b/rpcbind.sysconfig @@ -1,3 +1,4 @@ # # Optional arguments passed to rpcbind. See rpcbind(8) RPCBIND_ARGS="" +RPCBIND_OPTIONS="-r"