forked from pool/libtirpc
Accepting request 26719 from Base:System
Copy from Base:System/libtirpc based on submit request 26719 from user oertel OBS-URL: https://build.opensuse.org/request/show/26719 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libtirpc?expand=0&rev=9
This commit is contained in:
parent
a4b0344173
commit
7217715364
@ -1,13 +0,0 @@
|
|||||||
Index: libtirpc-0.1.9/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- libtirpc-0.1.9.orig/Makefile.am 2008-07-09 20:13:20.000000000 +0200
|
|
||||||
+++ libtirpc-0.1.9/Makefile.am 2008-09-02 13:40:24.000000000 +0200
|
|
||||||
@@ -47,5 +47,6 @@ pkgconfigdir=$(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = libtirpc.pc
|
|
||||||
|
|
||||||
install-exec-local:
|
|
||||||
- cp -p ./doc/etc_netconfig $(DESTDIR)/etc/netconfig
|
|
||||||
- chmod 0644 $(DESTDIR)/etc/netconfig
|
|
||||||
+ mkdir -p $(DESTDIR)$(sysconfdir)
|
|
||||||
+ cp -p ./doc/etc_netconfig $(DESTDIR)$(sysconfdir)/netconfig
|
|
||||||
+ chmod 0644 $(DESTDIR)$(sysconfdir)/netconfig
|
|
@ -1,32 +0,0 @@
|
|||||||
From 95c8f7227e6b15f2e430d7b87dadc95b2acd4a61 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 2 Sep 2008 12:09:39 -0400
|
|
||||||
Subject: [PATCH] Fix incorrect sizeof() in __rpc_getbroadifs
|
|
||||||
|
|
||||||
__rpc_getbroadifs returns bad broadcast addresses on 32bit
|
|
||||||
machines because when copying the broadcast addresses, ite
|
|
||||||
applies the sizeof() operator to a pointer to a sockaddr,
|
|
||||||
rather than the sockaddr itself.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/clnt_bcast.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/clnt_bcast.c b/src/clnt_bcast.c
|
|
||||||
index a96db45..aa2b8f2 100644
|
|
||||||
--- a/src/clnt_bcast.c
|
|
||||||
+++ b/src/clnt_bcast.c
|
|
||||||
@@ -163,7 +163,7 @@ __rpc_getbroadifs(int af, int proto, int socktype, broadlist_t *list)
|
|
||||||
/* memcpy(&bip->broadaddr, ifap->ifa_broadaddr,
|
|
||||||
(size_t)ifap->ifa_broadaddr->sa_len);*/
|
|
||||||
memcpy(&bip->broadaddr, ifap->ifa_broadaddr,
|
|
||||||
- (size_t)sizeof(ifap->ifa_broadaddr));
|
|
||||||
+ sizeof(bip->broadaddr));
|
|
||||||
sin = (struct sockaddr_in *)(void *)&bip->broadaddr;
|
|
||||||
sin->sin_port =
|
|
||||||
((struct sockaddr_in *)
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
From ea9f048761d0b9a2ab6310bffa07351f0b04d8c5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 2 Sep 2008 12:11:15 -0400
|
|
||||||
Subject: [PATCH] Always make IPv6 sockets V6ONLY
|
|
||||||
|
|
||||||
Assume you have a netconfig file looking like this:
|
|
||||||
|
|
||||||
udp tpi_clts v inet udp - -
|
|
||||||
udp6 tpi_clts v inet6 udp - -
|
|
||||||
...
|
|
||||||
|
|
||||||
a call to svc_tli_create(... &someaddr, "udp") will fail to create an
|
|
||||||
IPv6 server socket. The problem is that on Linux, passive IPv6 sockets
|
|
||||||
will also accept packets/connections from IPv4, and will simply map
|
|
||||||
the sender's address to an IPv6 mapped IPv4 address. So if you want to
|
|
||||||
bind both a UDPv4 and UDPv6 socket to the same port, this will fail with
|
|
||||||
EADDRINUSE.
|
|
||||||
|
|
||||||
The way to avoid this behavior is to change the socket to V6ONLY,
|
|
||||||
which tells the kernel to avoid the autmatic mapping.
|
|
||||||
|
|
||||||
The change proposed in the patch below does this. I *think* this is
|
|
||||||
a good place to do this, as it will also fix applications that do not
|
|
||||||
use svc_tli_create() - such as rpcbind, which creates the sockets on
|
|
||||||
its own using __rpc_nconf2fd.
|
|
||||||
|
|
||||||
I think this also improves portability, as BSD code assumes BSD
|
|
||||||
behavior, where this mapping does not occur either.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc_generic.c | 9 ++++++++-
|
|
||||||
1 files changed, 8 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc_generic.c b/src/rpc_generic.c
|
|
||||||
index 583aff0..ff4ba16 100644
|
|
||||||
--- a/src/rpc_generic.c
|
|
||||||
+++ b/src/rpc_generic.c
|
|
||||||
@@ -525,11 +525,18 @@ int
|
|
||||||
__rpc_nconf2fd(const struct netconfig *nconf)
|
|
||||||
{
|
|
||||||
struct __rpc_sockinfo si;
|
|
||||||
+ int fd;
|
|
||||||
|
|
||||||
if (!__rpc_nconf2sockinfo(nconf, &si))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- return socket(si.si_af, si.si_socktype, si.si_proto);
|
|
||||||
+ if ((fd = socket(si.si_af, si.si_socktype, si.si_proto)) >= 0 &&
|
|
||||||
+ si.si_af == AF_INET6) {
|
|
||||||
+ int val = 1;
|
|
||||||
+
|
|
||||||
+ setsockopt(fd, SOL_IPV6, IPV6_V6ONLY, &val, sizeof(val));
|
|
||||||
+ }
|
|
||||||
+ return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From 9e7ba0c7a02031294fefadfbca42b3dd5f2d841f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 16 Sep 2008 08:46:29 -0400
|
|
||||||
Subject: [PATCH] Fix for taddr2addr conversion bug of local addresses
|
|
||||||
|
|
||||||
When converting af_local socket addresses in taddr2uaddr, an incorrect
|
|
||||||
sizeof() would result in a truncated path string. As a result,
|
|
||||||
rpcbind will report the local /var/lib/rpcbind address to clients
|
|
||||||
as "/v" on a 32bit machine.
|
|
||||||
|
|
||||||
Signed-off-by: okir@suse.de
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc_generic.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc_generic.c b/src/rpc_generic.c
|
|
||||||
index ff4ba16..b436e3a 100644
|
|
||||||
--- a/src/rpc_generic.c
|
|
||||||
+++ b/src/rpc_generic.c
|
|
||||||
@@ -629,7 +629,7 @@ __rpc_taddr2uaddr_af(int af, const struct netbuf *nbuf)
|
|
||||||
/* if (asprintf(&ret, "%.*s", (int)(sun->sun_len -
|
|
||||||
offsetof(struct sockaddr_un, sun_path)),
|
|
||||||
sun->sun_path) < 0)*/
|
|
||||||
- if (asprintf(&ret, "%.*s", (int)(sizeof(sun) -
|
|
||||||
+ if (asprintf(&ret, "%.*s", (int)(sizeof(*sun) -
|
|
||||||
offsetof(struct sockaddr_un, sun_path)),
|
|
||||||
sun->sun_path) < 0)
|
|
||||||
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,169 +0,0 @@
|
|||||||
From 628788c1cc84c86ee4cb36ee5d4fe8954e90fca5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Steve Dickson <steved@redhat.com>
|
|
||||||
Date: Tue, 16 Sep 2008 11:32:31 -0400
|
|
||||||
Subject: [PATCH] - Fixed version-info in src/Makefile.am to reflect the correct version
|
|
||||||
- Fixed some of warnings in: src/auth_time.c, src/clnt_dg.c and
|
|
||||||
src/clnt_raw.c
|
|
||||||
- Added some #ifdef NOTUSED around some code in src/rpbc_clnt.c
|
|
||||||
that was not being used...
|
|
||||||
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/Makefile.am | 2 +-
|
|
||||||
src/auth_time.c | 3 ++-
|
|
||||||
src/clnt_dg.c | 2 +-
|
|
||||||
src/clnt_raw.c | 6 ++++--
|
|
||||||
src/rpbc_clnt.c | 8 ++++++--
|
|
||||||
src/rpcb_clnt.c | 7 ++++++-
|
|
||||||
6 files changed, 20 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
|
||||||
index edab300..a76c377 100644
|
|
||||||
--- a/src/Makefile.am
|
|
||||||
+++ b/src/Makefile.am
|
|
||||||
@@ -11,7 +11,7 @@ INCLUDES = -I../tirpc -DPORTMAP -DINET6 -DVERSION="\"$(VERSION)\"" \
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libtirpc.la
|
|
||||||
|
|
||||||
-libtirpc_la_LDFLAGS = -lnsl -lpthread -version-info 1:8:0
|
|
||||||
+libtirpc_la_LDFLAGS = -lnsl -lpthread -version-info 1:9:0
|
|
||||||
|
|
||||||
libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c clnt_bcast.c \
|
|
||||||
clnt_dg.c clnt_generic.c clnt_perror.c clnt_raw.c clnt_simple.c \
|
|
||||||
diff --git a/src/auth_time.c b/src/auth_time.c
|
|
||||||
index d77bcf5..7cfbb7e 100644
|
|
||||||
--- a/src/auth_time.c
|
|
||||||
+++ b/src/auth_time.c
|
|
||||||
@@ -248,7 +248,8 @@ __rpc_get_time_offset(td, srv, thost, uaddr, netid)
|
|
||||||
nis_server tsrv;
|
|
||||||
void (*oldsig)() = NULL; /* old alarm handler */
|
|
||||||
struct sockaddr_in sin;
|
|
||||||
- int s = RPC_ANYSOCK, len;
|
|
||||||
+ int s = RPC_ANYSOCK;
|
|
||||||
+ socklen_t len;
|
|
||||||
int type = 0;
|
|
||||||
|
|
||||||
td->tv_sec = 0;
|
|
||||||
diff --git a/src/clnt_dg.c b/src/clnt_dg.c
|
|
||||||
index 0e35742..da01c5b 100644
|
|
||||||
--- a/src/clnt_dg.c
|
|
||||||
+++ b/src/clnt_dg.c
|
|
||||||
@@ -306,7 +306,7 @@ clnt_dg_call(cl, proc, xargs, argsp, xresults, resultsp, utimeout)
|
|
||||||
int nrefreshes = 2; /* number of times to refresh cred */
|
|
||||||
struct timeval timeout;
|
|
||||||
struct pollfd fd;
|
|
||||||
- int total_time, nextsend_time, tv;
|
|
||||||
+ int total_time, nextsend_time, tv=0;
|
|
||||||
struct sockaddr *sa;
|
|
||||||
sigset_t mask;
|
|
||||||
sigset_t newmask;
|
|
||||||
diff --git a/src/clnt_raw.c b/src/clnt_raw.c
|
|
||||||
index 36035c8..f184066 100644
|
|
||||||
--- a/src/clnt_raw.c
|
|
||||||
+++ b/src/clnt_raw.c
|
|
||||||
@@ -84,8 +84,8 @@ clnt_raw_create(prog, vers)
|
|
||||||
{
|
|
||||||
struct clntraw_private *clp;
|
|
||||||
struct rpc_msg call_msg;
|
|
||||||
- XDR *xdrs = &clp->xdr_stream;
|
|
||||||
- CLIENT *client = &clp->client_object;
|
|
||||||
+ XDR *xdrs;
|
|
||||||
+ CLIENT *client;
|
|
||||||
|
|
||||||
mutex_lock(&clntraw_lock);
|
|
||||||
clp = clntraw_private;
|
|
||||||
@@ -101,6 +101,8 @@ clnt_raw_create(prog, vers)
|
|
||||||
clp->_raw_buf = __rpc_rawcombuf;
|
|
||||||
clntraw_private = clp;
|
|
||||||
}
|
|
||||||
+ xdrs = &clp->xdr_stream;
|
|
||||||
+ client = &clp->client_object;
|
|
||||||
/*
|
|
||||||
* pre-serialize the static part of the call msg and stash it away
|
|
||||||
*/
|
|
||||||
diff --git a/src/rpbc_clnt.c b/src/rpbc_clnt.c
|
|
||||||
index 75811f0..0e25747 100644
|
|
||||||
--- a/src/rpbc_clnt.c
|
|
||||||
+++ b/src/rpbc_clnt.c
|
|
||||||
@@ -109,7 +109,9 @@ static void delete_cache(struct netbuf *);
|
|
||||||
static void add_cache(const char *, const char *, struct netbuf *, char *);
|
|
||||||
static CLIENT *getclnthandle(const char *, const struct netconfig *, char **);
|
|
||||||
static CLIENT *local_rpcb(void);
|
|
||||||
+#if NOTUSED
|
|
||||||
static struct netbuf *got_entry(rpcb_entry_list_ptr, const struct netconfig *);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This routine adjusts the timeout used for calls to the remote rpcbind.
|
|
||||||
@@ -625,7 +627,7 @@ rpcb_unset(program, version, nconf)
|
|
||||||
CLNT_DESTROY(client);
|
|
||||||
return (rslt);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+#ifdef NOTUSED
|
|
||||||
/*
|
|
||||||
* From the merged list, find the appropriate entry
|
|
||||||
*/
|
|
||||||
@@ -657,7 +659,7 @@ got_entry(relp, nconf)
|
|
||||||
}
|
|
||||||
return (na);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+#endif
|
|
||||||
/*
|
|
||||||
* Quick check to see if rpcbind is up. Tries to connect over
|
|
||||||
* local transport.
|
|
||||||
@@ -725,7 +727,9 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
|
|
||||||
CLIENT **clpp;
|
|
||||||
struct timeval *tp;
|
|
||||||
{
|
|
||||||
+#ifdef NOTUSED
|
|
||||||
static bool_t check_rpcbind = TRUE;
|
|
||||||
+#endif
|
|
||||||
CLIENT *client = NULL;
|
|
||||||
RPCB parms;
|
|
||||||
enum clnt_stat clnt_st;
|
|
||||||
diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c
|
|
||||||
index 040f4ce..ed16f00 100644
|
|
||||||
--- a/src/rpcb_clnt.c
|
|
||||||
+++ b/src/rpcb_clnt.c
|
|
||||||
@@ -109,7 +109,9 @@ static void delete_cache(struct netbuf *);
|
|
||||||
static void add_cache(const char *, const char *, struct netbuf *, char *);
|
|
||||||
static CLIENT *getclnthandle(const char *, const struct netconfig *, char **);
|
|
||||||
static CLIENT *local_rpcb(void);
|
|
||||||
+#ifdef NOTUSED
|
|
||||||
static struct netbuf *got_entry(rpcb_entry_list_ptr, const struct netconfig *);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This routine adjusts the timeout used for calls to the remote rpcbind.
|
|
||||||
@@ -625,7 +627,7 @@ rpcb_unset(program, version, nconf)
|
|
||||||
CLNT_DESTROY(client);
|
|
||||||
return (rslt);
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+#ifdef NOTUSED
|
|
||||||
/*
|
|
||||||
* From the merged list, find the appropriate entry
|
|
||||||
*/
|
|
||||||
@@ -657,6 +659,7 @@ got_entry(relp, nconf)
|
|
||||||
}
|
|
||||||
return (na);
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Quick check to see if rpcbind is up. Tries to connect over
|
|
||||||
@@ -725,7 +728,9 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
|
|
||||||
CLIENT **clpp;
|
|
||||||
struct timeval *tp;
|
|
||||||
{
|
|
||||||
+#ifdef NOTUSED
|
|
||||||
static bool_t check_rpcbind = TRUE;
|
|
||||||
+#endif
|
|
||||||
CLIENT *client = NULL;
|
|
||||||
RPCB parms;
|
|
||||||
enum clnt_stat clnt_st;
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,176 +0,0 @@
|
|||||||
From 59c374c4b507aeca957ed0096d98006edf601375 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:04:17 -0400
|
|
||||||
Subject: [PATCH] Fix xp_raddr handling in svc_fd_create etc
|
|
||||||
|
|
||||||
Currently svc_fd_create tries to do some clever tricks
|
|
||||||
with IPv4/v6 address mapping.
|
|
||||||
|
|
||||||
This is broken for several reasons.
|
|
||||||
1. We don't want IPv4 based transport to look like IPv6
|
|
||||||
transports. Old applications compiled against tirpc
|
|
||||||
will expect AF_INET addresses, and are not equipped
|
|
||||||
to deal with AF_INET6.
|
|
||||||
2. There's a buffer overflow.
|
|
||||||
memcpy(&sin6, &ss, sizeof(ss));
|
|
||||||
copies a full struct sockaddr to a sockaddr_in6 on
|
|
||||||
the stack. Unlikely to be exploitable, but I wonder
|
|
||||||
if this ever worked....
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc_com.h | 2 +
|
|
||||||
src/svc_dg.c | 7 +-----
|
|
||||||
src/svc_vc.c | 65 +++++++++++++++++++++++++++-----------------------------
|
|
||||||
3 files changed, 34 insertions(+), 40 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc_com.h b/src/rpc_com.h
|
|
||||||
index 110d35a..a935080 100644
|
|
||||||
--- a/src/rpc_com.h
|
|
||||||
+++ b/src/rpc_com.h
|
|
||||||
@@ -85,6 +85,8 @@ bool_t __svc_clean_idle(fd_set *, int, bool_t);
|
|
||||||
bool_t __xdrrec_setnonblock(XDR *, int);
|
|
||||||
bool_t __xdrrec_getrec(XDR *, enum xprt_stat *, bool_t);
|
|
||||||
void __xprt_unregister_unlocked(SVCXPRT *);
|
|
||||||
+void __xprt_set_raddr(SVCXPRT *, const struct sockaddr_storage *);
|
|
||||||
+
|
|
||||||
|
|
||||||
SVCXPRT **__svc_xports;
|
|
||||||
int __svc_maxrec;
|
|
||||||
diff --git a/src/svc_dg.c b/src/svc_dg.c
|
|
||||||
index a72abe4..76a480e 100644
|
|
||||||
--- a/src/svc_dg.c
|
|
||||||
+++ b/src/svc_dg.c
|
|
||||||
@@ -193,12 +193,7 @@ again:
|
|
||||||
xprt->xp_rtaddr.len = alen;
|
|
||||||
}
|
|
||||||
memcpy(xprt->xp_rtaddr.buf, &ss, alen);
|
|
||||||
-#ifdef PORTMAP
|
|
||||||
- if (ss.ss_family == AF_INET6) {
|
|
||||||
- xprt->xp_raddr = *(struct sockaddr_in6 *)xprt->xp_rtaddr.buf;
|
|
||||||
- xprt->xp_addrlen = sizeof (struct sockaddr_in6);
|
|
||||||
- }
|
|
||||||
-#endif /* PORTMAP */
|
|
||||||
+ __xprt_set_raddr(xprt, &ss);
|
|
||||||
xdrs->x_op = XDR_DECODE;
|
|
||||||
XDR_SETPOS(xdrs, 0);
|
|
||||||
if (! xdr_callmsg(xdrs, msg)) {
|
|
||||||
diff --git a/src/svc_vc.c b/src/svc_vc.c
|
|
||||||
index 3d77aef..c62343b 100644
|
|
||||||
--- a/src/svc_vc.c
|
|
||||||
+++ b/src/svc_vc.c
|
|
||||||
@@ -117,6 +117,29 @@ map_ipv4_to_ipv6(sin, sin6)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * This is used to set xprt->xp_raddr in a way legacy
|
|
||||||
+ * apps can deal with
|
|
||||||
+ */
|
|
||||||
+void
|
|
||||||
+__xprt_set_raddr(SVCXPRT *xprt, const struct sockaddr_storage *ss)
|
|
||||||
+{
|
|
||||||
+ switch (ss->ss_family) {
|
|
||||||
+ case AF_INET6:
|
|
||||||
+ memcpy(&xprt->xp_raddr, ss, sizeof(struct sockaddr_in6));
|
|
||||||
+ xprt->xp_addrlen = sizeof (struct sockaddr_in6);
|
|
||||||
+ break;
|
|
||||||
+ case AF_INET:
|
|
||||||
+ memcpy(&xprt->xp_raddr, ss, sizeof(struct sockaddr_in));
|
|
||||||
+ xprt->xp_addrlen = sizeof (struct sockaddr_in);
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ xprt->xp_raddr.sin6_family = AF_UNSPEC;
|
|
||||||
+ xprt->xp_addrlen = sizeof (struct sockaddr);
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* Usage:
|
|
||||||
* xprt = svc_vc_create(sock, send_buf_size, recv_buf_size);
|
|
||||||
*
|
|
||||||
@@ -201,7 +224,6 @@ svc_fd_create(fd, sendsize, recvsize)
|
|
||||||
u_int recvsize;
|
|
||||||
{
|
|
||||||
struct sockaddr_storage ss;
|
|
||||||
- struct sockaddr_in6 sin6;
|
|
||||||
socklen_t slen;
|
|
||||||
SVCXPRT *ret;
|
|
||||||
|
|
||||||
@@ -228,28 +250,16 @@ svc_fd_create(fd, sendsize, recvsize)
|
|
||||||
warnx("svc_fd_create: could not retrieve remote addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- if (ss.ss_family == AF_INET) {
|
|
||||||
- map_ipv4_to_ipv6((struct sockaddr_in *)&ss, &sin6);
|
|
||||||
- } else {
|
|
||||||
- memcpy(&sin6, &ss, sizeof(ss));
|
|
||||||
- }
|
|
||||||
ret->xp_rtaddr.maxlen = ret->xp_rtaddr.len = sizeof(ss);
|
|
||||||
ret->xp_rtaddr.buf = mem_alloc((size_t)sizeof(ss));
|
|
||||||
if (ret->xp_rtaddr.buf == NULL) {
|
|
||||||
warnx("svc_fd_create: no mem for local addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- if (ss.ss_family == AF_INET)
|
|
||||||
- memcpy(ret->xp_rtaddr.buf, &ss, (size_t)sizeof(ss));
|
|
||||||
- else
|
|
||||||
- memcpy(ret->xp_rtaddr.buf, &sin6, (size_t)sizeof(ss));
|
|
||||||
-#ifdef PORTMAP
|
|
||||||
- if (sin6.sin6_family == AF_INET6 || sin6.sin6_family == AF_LOCAL) {
|
|
||||||
- memcpy(&ret->xp_raddr, ret->xp_rtaddr.buf,
|
|
||||||
- sizeof(struct sockaddr_in6));
|
|
||||||
- ret->xp_addrlen = sizeof (struct sockaddr_in6);
|
|
||||||
- }
|
|
||||||
-#endif /* PORTMAP */
|
|
||||||
+ memcpy(ret->xp_rtaddr.buf, &ss, (size_t)sizeof(ss));
|
|
||||||
+
|
|
||||||
+ /* Set xp_raddr for compatibility */
|
|
||||||
+ __xprt_set_raddr(ret, &ss);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
@@ -312,7 +322,6 @@ rendezvous_request(xprt, msg)
|
|
||||||
struct cf_rendezvous *r;
|
|
||||||
struct cf_conn *cd;
|
|
||||||
struct sockaddr_storage addr;
|
|
||||||
- struct sockaddr_in6 sin6;
|
|
||||||
socklen_t len;
|
|
||||||
struct __rpc_sockinfo si;
|
|
||||||
SVCXPRT *newxprt;
|
|
||||||
@@ -344,27 +353,15 @@ again:
|
|
||||||
*/
|
|
||||||
|
|
||||||
newxprt = makefd_xprt(sock, r->sendsize, r->recvsize);
|
|
||||||
- if (addr.ss_family == AF_INET) {
|
|
||||||
- map_ipv4_to_ipv6((struct sockaddr_in *)&addr, &sin6);
|
|
||||||
- } else {
|
|
||||||
- memcpy(&sin6, &addr, len);
|
|
||||||
- }
|
|
||||||
newxprt->xp_rtaddr.buf = mem_alloc(len);
|
|
||||||
if (newxprt->xp_rtaddr.buf == NULL)
|
|
||||||
return (FALSE);
|
|
||||||
|
|
||||||
- if (addr.ss_family == AF_INET)
|
|
||||||
- memcpy(newxprt->xp_rtaddr.buf, &addr, len);
|
|
||||||
- else
|
|
||||||
- memcpy(newxprt->xp_rtaddr.buf, &sin6, len);
|
|
||||||
+ memcpy(newxprt->xp_rtaddr.buf, &addr, len);
|
|
||||||
newxprt->xp_rtaddr.maxlen = newxprt->xp_rtaddr.len = len;
|
|
||||||
-#ifdef PORTMAP
|
|
||||||
- if (sin6.sin6_family == AF_INET6 || sin6.sin6_family == AF_LOCAL) {
|
|
||||||
- memcpy(&newxprt->xp_raddr, newxprt->xp_rtaddr.buf,
|
|
||||||
- sizeof(struct sockaddr_in6));
|
|
||||||
- newxprt->xp_addrlen = sizeof(struct sockaddr_in6);
|
|
||||||
- }
|
|
||||||
-#endif /* PORTMAP */
|
|
||||||
+
|
|
||||||
+ __xprt_set_raddr(newxprt, &addr);
|
|
||||||
+
|
|
||||||
if (__rpc_fd2sockinfo(sock, &si) && si.si_proto == IPPROTO_TCP) {
|
|
||||||
len = 1;
|
|
||||||
/* XXX fvdl - is this useful? */
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
From da5f9861ea3bae59c8eead26d38334721caa9f0a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:05:20 -0400
|
|
||||||
Subject: [PATCH] Kill map_ipv4_to_ipv6
|
|
||||||
|
|
||||||
After the change to svc_vc.c performed in the previous patch,
|
|
||||||
this function is no longer needed.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/svc_vc.c | 13 -------------
|
|
||||||
1 files changed, 0 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/svc_vc.c b/src/svc_vc.c
|
|
||||||
index c62343b..0d532a0 100644
|
|
||||||
--- a/src/svc_vc.c
|
|
||||||
+++ b/src/svc_vc.c
|
|
||||||
@@ -103,19 +103,6 @@ struct cf_conn { /* kept in xprt->xp_p1 for actual connection */
|
|
||||||
struct timeval last_recv_time;
|
|
||||||
};
|
|
||||||
|
|
||||||
-static void
|
|
||||||
-map_ipv4_to_ipv6(sin, sin6)
|
|
||||||
- struct sockaddr_in *sin;
|
|
||||||
- struct sockaddr_in6 *sin6;
|
|
||||||
-{
|
|
||||||
- sin6->sin6_family = AF_INET6;
|
|
||||||
- sin6->sin6_port = sin->sin_port;
|
|
||||||
- sin6->sin6_addr.s6_addr32[0] = 0;
|
|
||||||
- sin6->sin6_addr.s6_addr32[1] = 0;
|
|
||||||
- sin6->sin6_addr.s6_addr32[2] = htonl(0xffff);
|
|
||||||
- sin6->sin6_addr.s6_addr32[3] = *(uint32_t *)&sin->sin_addr;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
/*
|
|
||||||
* This is used to set xprt->xp_raddr in a way legacy
|
|
||||||
* apps can deal with
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
|||||||
From d94b92d5125242ce595c1baf42a1e6d1004b7756 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:06:54 -0400
|
|
||||||
Subject: [PATCH] Introduce __rpc_set_netbuf helper
|
|
||||||
|
|
||||||
The RPC code contains a number of places where a netbuf
|
|
||||||
is initialized with some data. All the mem_alloc/memcpy
|
|
||||||
stuff is open-coded. Introduce a helper function and
|
|
||||||
convert the code.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc_com.h | 1 +
|
|
||||||
src/rpc_generic.c | 19 +++++++++++++++++++
|
|
||||||
src/svc_dg.c | 14 +++-----------
|
|
||||||
src/svc_vc.c | 24 ++++++------------------
|
|
||||||
4 files changed, 29 insertions(+), 29 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc_com.h b/src/rpc_com.h
|
|
||||||
index a935080..0981471 100644
|
|
||||||
--- a/src/rpc_com.h
|
|
||||||
+++ b/src/rpc_com.h
|
|
||||||
@@ -61,6 +61,7 @@ extern u_int __rpc_get_a_size(int);
|
|
||||||
extern int __rpc_dtbsize(void);
|
|
||||||
extern struct netconfig * __rpcgettp(int);
|
|
||||||
extern int __rpc_get_default_domain(char **);
|
|
||||||
+struct netbuf *__rpc_set_netbuf(struct netbuf *, const void *, size_t);
|
|
||||||
|
|
||||||
char *__rpc_taddr2uaddr_af(int, const struct netbuf *);
|
|
||||||
struct netbuf *__rpc_uaddr2taddr_af(int, const char *);
|
|
||||||
diff --git a/src/rpc_generic.c b/src/rpc_generic.c
|
|
||||||
index b436e3a..9ada668 100644
|
|
||||||
--- a/src/rpc_generic.c
|
|
||||||
+++ b/src/rpc_generic.c
|
|
||||||
@@ -833,3 +833,22 @@ __rpc_sockisbound(int fd)
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Helper function to set up a netbuf
|
|
||||||
+ */
|
|
||||||
+struct netbuf *
|
|
||||||
+__rpc_set_netbuf(struct netbuf *nb, const void *ptr, size_t len)
|
|
||||||
+{
|
|
||||||
+ if (nb->len != len) {
|
|
||||||
+ if (nb->len)
|
|
||||||
+ mem_free(nb->buf, nb->len);
|
|
||||||
+ nb->buf = mem_alloc(len);
|
|
||||||
+ if (nb->buf == NULL)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ nb->maxlen = nb->len = len;
|
|
||||||
+ }
|
|
||||||
+ memcpy(nb->buf, ptr, len);
|
|
||||||
+ return nb;
|
|
||||||
+}
|
|
||||||
diff --git a/src/svc_dg.c b/src/svc_dg.c
|
|
||||||
index 76a480e..7df470e 100644
|
|
||||||
--- a/src/svc_dg.c
|
|
||||||
+++ b/src/svc_dg.c
|
|
||||||
@@ -140,10 +140,7 @@ svc_dg_create(fd, sendsize, recvsize)
|
|
||||||
slen = sizeof ss;
|
|
||||||
if (getsockname(fd, (struct sockaddr *)(void *)&ss, &slen) < 0)
|
|
||||||
goto freedata;
|
|
||||||
- xprt->xp_ltaddr.buf = mem_alloc(sizeof (struct sockaddr_storage));
|
|
||||||
- xprt->xp_ltaddr.maxlen = sizeof (struct sockaddr_storage);
|
|
||||||
- xprt->xp_ltaddr.len = slen;
|
|
||||||
- memcpy(xprt->xp_ltaddr.buf, &ss, slen);
|
|
||||||
+ __rpc_set_netbuf(&xprt->xp_ltaddr, &ss, slen);
|
|
||||||
|
|
||||||
xprt_register(xprt);
|
|
||||||
return (xprt);
|
|
||||||
@@ -186,13 +183,8 @@ again:
|
|
||||||
goto again;
|
|
||||||
if (rlen == -1 || (rlen < (ssize_t)(4 * sizeof (u_int32_t))))
|
|
||||||
return (FALSE);
|
|
||||||
- if (xprt->xp_rtaddr.len < alen) {
|
|
||||||
- if (xprt->xp_rtaddr.len != 0)
|
|
||||||
- mem_free(xprt->xp_rtaddr.buf, xprt->xp_rtaddr.len);
|
|
||||||
- xprt->xp_rtaddr.buf = mem_alloc(alen);
|
|
||||||
- xprt->xp_rtaddr.len = alen;
|
|
||||||
- }
|
|
||||||
- memcpy(xprt->xp_rtaddr.buf, &ss, alen);
|
|
||||||
+ __rpc_set_netbuf(&xprt->xp_rtaddr, &ss, alen);
|
|
||||||
+
|
|
||||||
__xprt_set_raddr(xprt, &ss);
|
|
||||||
xdrs->x_op = XDR_DECODE;
|
|
||||||
XDR_SETPOS(xdrs, 0);
|
|
||||||
diff --git a/src/svc_vc.c b/src/svc_vc.c
|
|
||||||
index 0d532a0..44d3497 100644
|
|
||||||
--- a/src/svc_vc.c
|
|
||||||
+++ b/src/svc_vc.c
|
|
||||||
@@ -184,14 +184,10 @@ svc_vc_create(fd, sendsize, recvsize)
|
|
||||||
goto cleanup_svc_vc_create;
|
|
||||||
}
|
|
||||||
|
|
||||||
- xprt->xp_ltaddr.maxlen = xprt->xp_ltaddr.len = sizeof(sslocal);
|
|
||||||
- xprt->xp_ltaddr.buf = mem_alloc((size_t)sizeof(sslocal));
|
|
||||||
- if (xprt->xp_ltaddr.buf == NULL) {
|
|
||||||
+ if (!__rpc_set_netbuf(&xprt->xp_ltaddr, &sslocal, sizeof(sslocal))) {
|
|
||||||
warnx("svc_vc_create: no mem for local addr");
|
|
||||||
goto cleanup_svc_vc_create;
|
|
||||||
}
|
|
||||||
- memcpy(xprt->xp_ltaddr.buf, &sslocal, (size_t)sizeof(sslocal));
|
|
||||||
- xprt->xp_rtaddr.maxlen = sizeof (struct sockaddr_storage);
|
|
||||||
xprt_register(xprt);
|
|
||||||
return (xprt);
|
|
||||||
cleanup_svc_vc_create:
|
|
||||||
@@ -225,25 +221,20 @@ svc_fd_create(fd, sendsize, recvsize)
|
|
||||||
warnx("svc_fd_create: could not retrieve local addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- ret->xp_ltaddr.maxlen = ret->xp_ltaddr.len = sizeof(ss);
|
|
||||||
- ret->xp_ltaddr.buf = mem_alloc((size_t)sizeof(ss));
|
|
||||||
- if (ret->xp_ltaddr.buf == NULL) {
|
|
||||||
+ if (!__rpc_set_netbuf(&ret->xp_ltaddr, &ss, sizeof(ss))) {
|
|
||||||
warnx("svc_fd_create: no mem for local addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- memcpy(ret->xp_ltaddr.buf, &ss, (size_t)sizeof(ss));
|
|
||||||
+
|
|
||||||
slen = sizeof (struct sockaddr_storage);
|
|
||||||
if (getpeername(fd, (struct sockaddr *)(void *)&ss, &slen) < 0) {
|
|
||||||
warnx("svc_fd_create: could not retrieve remote addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- ret->xp_rtaddr.maxlen = ret->xp_rtaddr.len = sizeof(ss);
|
|
||||||
- ret->xp_rtaddr.buf = mem_alloc((size_t)sizeof(ss));
|
|
||||||
- if (ret->xp_rtaddr.buf == NULL) {
|
|
||||||
+ if (!__rpc_set_netbuf(&ret->xp_rtaddr, &ss, sizeof(ss))) {
|
|
||||||
warnx("svc_fd_create: no mem for local addr");
|
|
||||||
goto freedata;
|
|
||||||
}
|
|
||||||
- memcpy(ret->xp_rtaddr.buf, &ss, (size_t)sizeof(ss));
|
|
||||||
|
|
||||||
/* Set xp_raddr for compatibility */
|
|
||||||
__xprt_set_raddr(ret, &ss);
|
|
||||||
@@ -340,12 +331,9 @@ again:
|
|
||||||
*/
|
|
||||||
|
|
||||||
newxprt = makefd_xprt(sock, r->sendsize, r->recvsize);
|
|
||||||
- newxprt->xp_rtaddr.buf = mem_alloc(len);
|
|
||||||
- if (newxprt->xp_rtaddr.buf == NULL)
|
|
||||||
- return (FALSE);
|
|
||||||
|
|
||||||
- memcpy(newxprt->xp_rtaddr.buf, &addr, len);
|
|
||||||
- newxprt->xp_rtaddr.maxlen = newxprt->xp_rtaddr.len = len;
|
|
||||||
+ if (!__rpc_set_netbuf(&newxprt->xp_rtaddr, &addr, len))
|
|
||||||
+ return (FALSE);
|
|
||||||
|
|
||||||
__xprt_set_raddr(newxprt, &addr);
|
|
||||||
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From 851b0f5c6dca22d634603f03f0a5e3e35c6db867 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:08:07 -0400
|
|
||||||
Subject: [PATCH] svc_getcaller_netbuf macro seems broken
|
|
||||||
|
|
||||||
I haven't found any documentation, but the comment in the header
|
|
||||||
file seems to suggest that svc_getcaller_netbuf should return the
|
|
||||||
xp_rtaddr netbuf. Returning the address of the socket descripor
|
|
||||||
seems to be wrong at any rate.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
tirpc/rpc/svc_soc.h | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tirpc/rpc/svc_soc.h b/tirpc/rpc/svc_soc.h
|
|
||||||
index a8aabf3..0dc96e2 100644
|
|
||||||
--- a/tirpc/rpc/svc_soc.h
|
|
||||||
+++ b/tirpc/rpc/svc_soc.h
|
|
||||||
@@ -54,7 +54,7 @@
|
|
||||||
*/
|
|
||||||
#define svc_getcaller(x) (&(x)->xp_raddr)
|
|
||||||
/* Getting address of a caller using netbuf xp_rtaddr */
|
|
||||||
-#define svc_getcaller_netbuf(x) (&(x)->xp_fd)
|
|
||||||
+#define svc_getcaller_netbuf(x) (&(x)->xp_rtaddr)
|
|
||||||
/*
|
|
||||||
* Service registration
|
|
||||||
*
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From 6c487efe74adb5c29f7bee5bd51b3ebef4968f7d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:09:06 -0400
|
|
||||||
Subject: [PATCH] Fix getpeereid
|
|
||||||
|
|
||||||
getpeereid fails because it uses an incorrect getsockopt call to obtain
|
|
||||||
the peer credentials on a AF_LOCAL socket. This in turn will cause all
|
|
||||||
RPC services to be registered with rpcbind to show up as having been
|
|
||||||
registered by "unknown".
|
|
||||||
|
|
||||||
This has a serious impact on security - a service owned by "unknown"
|
|
||||||
can essentially be unregistered (and thus replaced) by anyone.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/getpeereid.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/getpeereid.c b/src/getpeereid.c
|
|
||||||
index 9207d9d..57ee197 100644
|
|
||||||
--- a/src/getpeereid.c
|
|
||||||
+++ b/src/getpeereid.c
|
|
||||||
@@ -41,7 +41,7 @@ getpeereid(int s, uid_t *euid, gid_t *egid)
|
|
||||||
int error;
|
|
||||||
|
|
||||||
uclen = sizeof(uc);
|
|
||||||
- error = getsockopt(s, 0, SO_PEERCRED, &uc, &uclen); /* SCM_CREDENTIALS */
|
|
||||||
+ error = getsockopt(s, SOL_SOCKET, SO_PEERCRED, &uc, &uclen); /* SCM_CREDENTIALS */
|
|
||||||
if (error != 0)
|
|
||||||
return (error);
|
|
||||||
// if (uc.cr_version != XUCRED_VERSION)
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
From d9a5ae7079d001a9e3b9b384f9153f591a7158bd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Olaf Kirch <okir@suse.de>
|
|
||||||
Date: Tue, 30 Sep 2008 15:10:43 -0400
|
|
||||||
Subject: [PATCH] Fix __rpc_getconfip
|
|
||||||
|
|
||||||
__rpc_getconfip is supposed to return the first netconf
|
|
||||||
entry supporting tcp or udp, respectively. The code will
|
|
||||||
currently return the *last* entry, plus it will leak
|
|
||||||
memory when there is more than one such entry.
|
|
||||||
|
|
||||||
This patch fixes this issue.
|
|
||||||
|
|
||||||
Signed-off-by: Olaf Kirch <okir@suse.de>
|
|
||||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
||||||
---
|
|
||||||
src/rpc_generic.c | 6 ++++--
|
|
||||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/rpc_generic.c b/src/rpc_generic.c
|
|
||||||
index 9ada668..3aad018 100644
|
|
||||||
--- a/src/rpc_generic.c
|
|
||||||
+++ b/src/rpc_generic.c
|
|
||||||
@@ -254,12 +254,14 @@ __rpc_getconfip(nettype)
|
|
||||||
while ((nconf = getnetconfig(confighandle)) != NULL) {
|
|
||||||
if (strcmp(nconf->nc_protofmly, NC_INET) == 0 ||
|
|
||||||
strcmp(nconf->nc_protofmly, NC_INET6) == 0) {
|
|
||||||
- if (strcmp(nconf->nc_proto, NC_TCP) == 0) {
|
|
||||||
+ if (strcmp(nconf->nc_proto, NC_TCP) == 0 &&
|
|
||||||
+ netid_tcp == NULL) {
|
|
||||||
netid_tcp = strdup(nconf->nc_netid);
|
|
||||||
thr_setspecific(tcp_key,
|
|
||||||
(void *) netid_tcp);
|
|
||||||
} else
|
|
||||||
- if (strcmp(nconf->nc_proto, NC_UDP) == 0) {
|
|
||||||
+ if (strcmp(nconf->nc_proto, NC_UDP) == 0 &&
|
|
||||||
+ netid_udp == NULL) {
|
|
||||||
netid_udp = strdup(nconf->nc_netid);
|
|
||||||
thr_setspecific(udp_key,
|
|
||||||
(void *) netid_udp);
|
|
||||||
--
|
|
||||||
1.5.6
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:8a8deae8e62dc75e1eb4f2ae01c1f047823040b3c196c639b6e0d795be3d1552
|
|
||||||
size 411219
|
|
3
libtirpc-0.2.1.tar.bz2
Normal file
3
libtirpc-0.2.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ea77cadd63941fc4edbee7863d2c7094e6a18263d2a2c8922319aee91352ff41
|
||||||
|
size 413031
|
@ -1,3 +1,19 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Dec 16 01:22:13 CET 2009 - ro@suse.de
|
||||||
|
|
||||||
|
- update to version 0.2.1 which integrates the fixes previously
|
||||||
|
in single patches from git and works with current nfs-client
|
||||||
|
recent changes include:
|
||||||
|
- rpcb_getaddr: Handle only "udp" and "tcp" netids when using
|
||||||
|
PMAP_GETPORT
|
||||||
|
- rpcb_getaddr: Always do PMAP_GETPORT first for NC_INET
|
||||||
|
transports
|
||||||
|
- getnetconfig: Fix NC_BADFILE return from getnetconfigent(3t)
|
||||||
|
- Added HAVE_LIBGSSAPI defines around gss code
|
||||||
|
so the --disble-gss configure option would work
|
||||||
|
- rpcb_clnt: RPC_PROGNOTREGISTERED is a permanent error
|
||||||
|
- clnt_dg: Fix infinite loop when datagram call times out
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Mar 13 21:32:42 CET 2009 - crrodriguez@suse.de
|
Fri Mar 13 21:32:42 CET 2009 - crrodriguez@suse.de
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package libtirpc (Version 0.1.9)
|
# spec file for package libtirpc (Version 0.2.1)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -23,24 +23,11 @@ Name: libtirpc
|
|||||||
License: Other uncritical OpenSource License ; Sun Industry Standards Source License 1.0
|
License: Other uncritical OpenSource License ; Sun Industry Standards Source License 1.0
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 0.1.9
|
Version: 0.2.1
|
||||||
Release: 5
|
Release: 1
|
||||||
Summary: Transport Independent RPC Library
|
Summary: Transport Independent RPC Library
|
||||||
Url: http://nfsv4.bullopensource.org/doc/tirpc_rpcbind.php
|
Url: http://sourceforge.net/projects/libtirpc/
|
||||||
Source: %{name}-%{version}.tar.bz2
|
Source: %{name}-%{version}.tar.bz2
|
||||||
# patches from git
|
|
||||||
Patch1: libtirpc-0.1.9-0001-Fix-incorrect-sizeof-in-__rpc_getbroadifs.patch
|
|
||||||
Patch2: libtirpc-0.1.9-0002-Always-make-IPv6-sockets-V6ONLY.patch
|
|
||||||
Patch3: libtirpc-0.1.9-0003-Fix-for-taddr2addr-conversion-bug-of-local-addresses.patch
|
|
||||||
Patch4: libtirpc-0.1.9-0004--Fixed-version-info-in-src-Makefile.am-to-reflect-t.patch
|
|
||||||
Patch5: libtirpc-0.1.9-0005-Fix-xp_raddr-handling-in-svc_fd_create-etc.patch
|
|
||||||
Patch6: libtirpc-0.1.9-0006-Kill-map_ipv4_to_ipv6.patch
|
|
||||||
Patch7: libtirpc-0.1.9-0007-Introduce-__rpc_set_netbuf-helper.patch
|
|
||||||
Patch8: libtirpc-0.1.9-0008-svc_getcaller_netbuf-macro-seems-broken.patch
|
|
||||||
Patch9: libtirpc-0.1.9-0009-Fix-getpeereid.patch
|
|
||||||
Patch10: libtirpc-0.1.9-0010-Fix-__rpc_getconfip.patch
|
|
||||||
#
|
|
||||||
Patch20: libtirpc-0.1.7-use_sysconfdir.patch
|
|
||||||
Patch21: libtirpc-clnt_broadcast_fix.patch
|
Patch21: libtirpc-clnt_broadcast_fix.patch
|
||||||
Patch22: libtirpc-rpc_broadcast_misformed_replies.patch
|
Patch22: libtirpc-rpc_broadcast_misformed_replies.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
@ -98,17 +85,6 @@ Authors:
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
%patch9 -p1
|
|
||||||
%patch10 -p1
|
|
||||||
%patch20 -p1
|
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
|
|
||||||
@ -148,53 +124,3 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_mandir}/man3/*
|
%{_mandir}/man3/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Mar 13 2009 crrodriguez@suse.de
|
|
||||||
- fix -devel package dependencies
|
|
||||||
* Mon Nov 17 2008 mkoenig@suse.de
|
|
||||||
- Fix a bug in clnt broadcast and handle misformed rpcbind replies
|
|
||||||
[bnc#436038]
|
|
||||||
* Wed Oct 22 2008 mrueckert@suse.de
|
|
||||||
- fix debug_packages_requires define
|
|
||||||
* Wed Oct 01 2008 mkoenig@suse.de
|
|
||||||
- add recent patches from git which fix some more bugs
|
|
||||||
* fix __rpc_getconfip
|
|
||||||
* fix getpeereid
|
|
||||||
* svc_getcaller_netbuf macro seems broken
|
|
||||||
* introduce __rpc_set_netbuf helper
|
|
||||||
* kill map_ipv4_to_ipv6
|
|
||||||
* Fix xp_raddr handling in svc_fd_create etc
|
|
||||||
* fix for taddr2addr conversion bug of local addresses [bnc#426883]
|
|
||||||
* Tue Sep 02 2008 mkoenig@suse.de
|
|
||||||
- update to version 0.1.9
|
|
||||||
* several bugfixes
|
|
||||||
- fix rpc_broadcast [bnc#421950]
|
|
||||||
- fix ipv4+ipv6 binding [bnc#421976]
|
|
||||||
- removed patches
|
|
||||||
libtirpc-0.1.7-arm.patch
|
|
||||||
libtirpc-0.1.7-bindresvport-ntohs.patch
|
|
||||||
libtirpc-0.1.7-bindresvport_ports.patch
|
|
||||||
libtirpc-0.1.7-bufoverflow.patch
|
|
||||||
libtirpc-0.1.7-clnt_raw-mutex.patch
|
|
||||||
libtirpc-0.1.7-dgcall-iprecverr.patch
|
|
||||||
libtirpc-0.1.7-gssglue.patch
|
|
||||||
libtirpc-0.1.7-libtirpc-pc.patch
|
|
||||||
libtirpc-0.1.7-man-install.patch
|
|
||||||
libtirpc-0.1.7-netconfig.patch
|
|
||||||
libtirpc-0.1.7-ppc64.patch
|
|
||||||
libtirpc-0.1.7-snprintf.patch
|
|
||||||
libtirpc-0.1.7-svcauthdestroy.patch
|
|
||||||
libtirpc-0.1.7-svc_auth_gss_lvalue_fix.patch
|
|
||||||
libtirpc-0.1.7-svcauthnone.patch
|
|
||||||
libtirpc-0.1.7-svc-rtaddr.patch
|
|
||||||
libtirpc-0.1.7-svc-run.patch
|
|
||||||
libtirpc-0.1.7-version.patch
|
|
||||||
libtirpc-0.1.7-xdr_bufferoverlow.patch
|
|
||||||
* Fri Aug 01 2008 ro@suse.de
|
|
||||||
- fix requires for debuginfo package
|
|
||||||
* Wed Mar 19 2008 mkoenig@suse.de
|
|
||||||
- initial packaging, version 0.1.7 [fate#300607]
|
|
||||||
- apply some fixes/enhancements from Steve Dickson
|
|
||||||
- includes fix for CVE-2007-3999
|
|
||||||
- set shlib soname version initially to 1.0.7,
|
|
||||||
keeping compatibility with RH
|
|
||||||
- fix some compiling issues
|
|
||||||
|
Loading…
Reference in New Issue
Block a user