!13 [sync] PR-7: rpcbind升级到1.2.6
From: @openeuler-sync-bot Reviewed-by: @zengwefeng Signed-off-by: @zengwefeng
This commit is contained in:
commit
37044015be
@ -1,96 +0,0 @@
|
||||
From 8e0eb02df52d15dd4317abeddec427cdbac4da3c Mon Sep 17 00:00:00 2001
|
||||
From: huyan <hu.huyan@huawei.com>
|
||||
Date: Mon, 8 Jul 2019 02:10:44 +0000
|
||||
Subject: [PATCH] backport bugfix rpcbind GETADDR return client ip
|
||||
|
||||
---
|
||||
src/util.c | 45 +++++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 39 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/util.c b/src/util.c
|
||||
index 74b0284..d722d4f 100644
|
||||
--- a/src/util.c
|
||||
+++ b/src/util.c
|
||||
@@ -103,7 +103,7 @@ char *
|
||||
addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
||||
char *netid)
|
||||
{
|
||||
- struct ifaddrs *ifap, *ifp = NULL, *bestif;
|
||||
+ struct ifaddrs *ifap, *ifp = NULL, *bestif, *exactif;
|
||||
struct netbuf *serv_nbp = NULL, *hint_nbp = NULL, tbuf;
|
||||
struct sockaddr *caller_sa, *hint_sa, *ifsa, *ifmasksa, *serv_sa;
|
||||
struct sockaddr_storage ss;
|
||||
@@ -157,7 +157,12 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
||||
* network portion of its address is equal to that of the client.
|
||||
* If so, we have found the interface that we want to use.
|
||||
*/
|
||||
- bestif = NULL;
|
||||
+ bestif = NULL; /* first interface UP with same network & family */
|
||||
+ exactif = NULL; /* the interface requested by the client */
|
||||
+ u_int8_t maskAllBits[16] = { /* 16 bytes for IPv6 */
|
||||
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
+
|
||||
for (ifap = ifp; ifap != NULL; ifap = ifap->ifa_next) {
|
||||
ifsa = ifap->ifa_addr;
|
||||
ifmasksa = ifap->ifa_netmask;
|
||||
@@ -175,8 +180,21 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
||||
if (!bitmaskcmp(&SA2SINADDR(ifsa),
|
||||
&SA2SINADDR(hint_sa), &SA2SINADDR(ifmasksa),
|
||||
sizeof(struct in_addr))) {
|
||||
- bestif = ifap;
|
||||
- goto found;
|
||||
+ if (getenv("RPCBIND_GETADDR_RETURN_CLIENT_IP") == NULL) {
|
||||
+ bestif = ifap;
|
||||
+ goto found;
|
||||
+ }
|
||||
+
|
||||
+ if(!bestif) /* for compatibility with previous code */
|
||||
+ bestif = ifap;
|
||||
+ /* Is this an exact match? */
|
||||
+ if (!bitmaskcmp(&SA2SINADDR(ifsa),
|
||||
+ &SA2SINADDR(hint_sa), maskAllBits,
|
||||
+ sizeof(struct in_addr))) {
|
||||
+ exactif = ifap;
|
||||
+ goto found;
|
||||
+ }
|
||||
+ /* else go-on looking for an exact match */
|
||||
}
|
||||
break;
|
||||
#ifdef INET6
|
||||
@@ -197,8 +215,21 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
||||
} else if (!bitmaskcmp(&SA2SIN6ADDR(ifsa),
|
||||
&SA2SIN6ADDR(hint_sa), &SA2SIN6ADDR(ifmasksa),
|
||||
sizeof(struct in6_addr))) {
|
||||
- bestif = ifap;
|
||||
- goto found;
|
||||
+ if (getenv("RPCBIND_GETADDR_RETURN_CLIENT_IP") == NULL) {
|
||||
+ bestif = ifap;
|
||||
+ goto found;
|
||||
+ }
|
||||
+
|
||||
+ if(!bestif) /* for compatibility with previous code */
|
||||
+ bestif = ifap;
|
||||
+ /* Is this an exact match? */
|
||||
+ if (!bitmaskcmp(&SA2SIN6ADDR(ifsa),
|
||||
+ &SA2SIN6ADDR(hint_sa), maskAllBits,
|
||||
+ sizeof(struct in6_addr))) {
|
||||
+ exactif = ifap;
|
||||
+ goto found;
|
||||
+ }
|
||||
+ /* else go-on looking for an exact match */
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
@@ -219,6 +250,8 @@ addrmerge(struct netbuf *caller, char *serv_uaddr, char *clnt_uaddr,
|
||||
goto freeit;
|
||||
|
||||
found:
|
||||
+ if(exactif)
|
||||
+ bestif = exactif;
|
||||
/*
|
||||
* Construct the new address using the the address from
|
||||
* `bestif', and the port number from `serv_uaddr'.
|
||||
--
|
||||
1.7.12.4
|
||||
|
||||
Binary file not shown.
BIN
rpcbind-1.2.6.tar.bz2
Normal file
BIN
rpcbind-1.2.6.tar.bz2
Normal file
Binary file not shown.
14
rpcbind.spec
14
rpcbind.spec
@ -2,8 +2,8 @@
|
||||
%global rpcbind_state_dir %{_rundir}/rpcbind
|
||||
|
||||
Name: rpcbind
|
||||
Version: 1.2.5
|
||||
Release: 2
|
||||
Version: 1.2.6
|
||||
Release: 1
|
||||
Summary: Universal addresses to RPC program number mapper
|
||||
License: BSD
|
||||
|
||||
@ -25,7 +25,6 @@ Patch101: %{name}-0.2.3-systemd-tmpfiles.patch
|
||||
Patch102: %{name}-0.2.4-runstatdir.patch
|
||||
Patch103: %{name}-0.2.4-systemd-service.patch
|
||||
Patch104: %{name}-0.2.4-systemd-rundir.patch
|
||||
Patch6000: bugfix-%{name}-GETADDR-return-client-ip.patch
|
||||
Patch6001: CVE-2017-8779.patch
|
||||
Patch9000: bugfix-listen-tcp-port-111.patch
|
||||
|
||||
@ -46,7 +45,7 @@ host to be able to make RPC calls on a server on that machine.
|
||||
autoreconf -fisv
|
||||
%configure --enable-warmstarts --with-statedir="%rpcbind_state_dir" \
|
||||
--with-rpcuser="%rpcbind_user_group" --with-nss-modules="files altfiles" \
|
||||
--sbindir=%{_bindir} --enable-debug
|
||||
--sbindir=%{_bindir} --enable-debug --enable-rmtcalls
|
||||
|
||||
make all
|
||||
|
||||
@ -57,6 +56,7 @@ install -m 0755 -d %{buildroot}%{_tmpfilesdir}
|
||||
install -m 0755 -d %{buildroot}%{_mandir}/man8
|
||||
install -m 0755 -d %{buildroot}%{rpcbind_state_dir}
|
||||
%make_install
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
|
||||
install -m 644 %{SOURCE1} %{buildroot}/etc/sysconfig/%{name}
|
||||
|
||||
@ -115,6 +115,12 @@ fi
|
||||
%{_mandir}/man8/*.8.gz
|
||||
|
||||
%changelog
|
||||
* Fri Dec 03 2021 quanhongfei <quanhongfei@huawei.com> - 1.2.6-1
|
||||
- Type:requirements
|
||||
- Id:NA
|
||||
- SUG:NA
|
||||
- DESC:update rpcbind to 1.2.6
|
||||
|
||||
* Thu Oct 10 2019 openEuler Buildteam <buildteam@openeuler.org> - 1.2.5-2
|
||||
- Type:bugfix
|
||||
- Id:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user