From 14c50e510b8607b646039e7aad3e403d9d67b87e Mon Sep 17 00:00:00 2001 From: quanhongfei <2506045831@qq.com> Date: Fri, 3 Dec 2021 15:46:02 +0800 Subject: [PATCH 1/7] update --- bugfix-rpcbind-GETADDR-return-client-ip.patch | 96 ------------------ rpcbind-1.2.5.tar.bz2 | Bin 123502 -> 0 bytes rpcbind-1.2.6.tar.bz2 | Bin 0 -> 124590 bytes rpcbind.spec | 14 ++- 4 files changed, 10 insertions(+), 100 deletions(-) delete mode 100644 bugfix-rpcbind-GETADDR-return-client-ip.patch delete mode 100644 rpcbind-1.2.5.tar.bz2 create mode 100644 rpcbind-1.2.6.tar.bz2 diff --git a/bugfix-rpcbind-GETADDR-return-client-ip.patch b/bugfix-rpcbind-GETADDR-return-client-ip.patch deleted file mode 100644 index a099cae..0000000 --- a/bugfix-rpcbind-GETADDR-return-client-ip.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 8e0eb02df52d15dd4317abeddec427cdbac4da3c Mon Sep 17 00:00:00 2001 -From: huyan -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 - diff --git a/rpcbind-1.2.5.tar.bz2 b/rpcbind-1.2.5.tar.bz2 deleted file mode 100644 index 79c722591acfb189aef9f9d6240f139abf125a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123502 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