Hello community, here is the log from the commit of package libtirpc for openSUSE:Factory checked in at 2015-07-19 11:44:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libtirpc (Old) and /work/SRC/openSUSE:Factory/.libtirpc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libtirpc" Changes: -------- --- /work/SRC/openSUSE:Factory/libtirpc/libtirpc.changes 2015-07-05 17:53:48.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libtirpc.new/libtirpc.changes 2015-07-19 11:44:53.000000000 +0200 @@ -1,0 +2,21 @@ +Thu Jul 9 10:47:08 CEST 2015 - [email protected] + +- Add 012-xp_sock.patch: add sunrpc compatibility define + +------------------------------------------------------------------- +Thu Jul 2 15:51:07 CEST 2015 - [email protected] + +- Update 009-authdes_pk_create.patch (fix syncaddr handling) +- Add 011-authdes_create.patch (fix syncaddr handling) + +------------------------------------------------------------------- +Sat Jun 27 06:46:14 UTC 2015 - [email protected] + +- Add 010-xdr_sizeof.patch (enable xdr_sizeof) + +------------------------------------------------------------------- +Fri Jun 26 22:15:28 UTC 2015 - [email protected] + +- Add 009-authdes_pk_create.patch (missing SunRPC compat function) + +------------------------------------------------------------------- New: ---- 009-authdes_pk_create.patch 010-xdr_sizeof.patch 011-authdes_create.patch 012-xp_sock.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libtirpc.spec ++++++ --- /var/tmp/diff_new_pack.Yxoz82/_old 2015-07-19 11:44:54.000000000 +0200 +++ /var/tmp/diff_new_pack.Yxoz82/_new 2015-07-19 11:44:54.000000000 +0200 @@ -44,6 +44,10 @@ Patch6: 006-memleak1.patch Patch7: 007-memleak2.patch Patch8: 008-fix-undef-ref.patch +Patch9: 009-authdes_pk_create.patch +Patch10: 010-xdr_sizeof.patch +Patch11: 011-authdes_create.patch +Patch12: 012-xp_sock.patch Patch25: patch6_7.diff # Patch37 is only needed on openSUSE >= 13.1, SLE >= 12 Patch37: libtirpc-new-path-rpcbindsock.patch @@ -89,6 +93,10 @@ %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 %patch25 -p1 %if 0%{suse_version} >= 1310 %patch37 -p1 ++++++ 009-authdes_pk_create.patch ++++++ diff --git a/src/libtirpc.map b/src/libtirpc.map index 449b769..13bc20a 100644 --- a/src/libtirpc.map +++ b/src/libtirpc.map @@ -321,6 +321,7 @@ TIRPC_0.3.3 { __key_decryptsession_pk_LOCAL; __key_encryptsession_pk_LOCAL; __key_gendes_LOCAL; + authdes_pk_create; } TIRPC_0.3.2; TIRPC_PRIVATE { diff --git a/src/rpc_soc.c b/src/rpc_soc.c index e146ed4..03bc0d4 100644 --- a/src/rpc_soc.c +++ b/src/rpc_soc.c @@ -61,6 +61,7 @@ #include <string.h> #include <unistd.h> #include <fcntl.h> +#include <rpcsvc/nis.h> #include "rpc_com.h" @@ -553,6 +554,46 @@ fallback: } /* + * Create the client des authentication object. Obsoleted by + * authdes_pk_seccreate(). + */ +extern AUTH *authdes_pk_seccreate(const char *, netobj *, u_int, const char *, + const des_block *, nis_server *); + +AUTH * +authdes_pk_create(servername, pkey, window, syncaddr, ckey) + char *servername; /* network name of server */ + netobj *pkey; /* public key */ + u_int window; /* time to live */ + struct sockaddr *syncaddr; /* optional hostaddr to sync with */ + des_block *ckey; /* optional conversation key to use */ +{ + AUTH *nauth; + char hostname[NI_MAXHOST]; + + if (syncaddr) { + /* + * Change addr to hostname, because that is the way + * new interface takes it. + */ + switch (syncaddr->sa_family) { + case AF_INET: + if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname, + sizeof hostname, NULL, 0, 0) != 0) + goto fallback; + break; + default: + goto fallback; + } + nauth = authdes_pk_seccreate(servername, pkey, window, hostname, ckey, NULL); + return (nauth); + } +fallback: + return authdes_pk_seccreate(servername, pkey, window, NULL, ckey, NULL); +} + + +/* * Create a client handle for a unix connection. Obsoleted by clnt_vc_create() */ CLIENT * diff --git a/tirpc/rpc/auth.h b/tirpc/rpc/auth.h index 3e44863..e67779c 100644 --- a/tirpc/rpc/auth.h +++ b/tirpc/rpc/auth.h @@ -313,6 +313,8 @@ extern AUTH *authnone_create(void); /* takes no parameters */ extern "C" { #endif extern AUTH *authdes_create (char *, u_int, struct sockaddr *, des_block *); +extern AUTH *authdes_pk_create (char *, netobj *, u_int, + struct sockaddr *, des_block *); extern AUTH *authdes_seccreate (const char *, const u_int, const char *, const des_block *); #ifdef __cplusplus ++++++ 010-xdr_sizeof.patch ++++++ diff --git a/src/Makefile.am b/src/Makefile.am index 18b1cec..a29f607 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -54,7 +54,7 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln auth_time.c auth_des.c authdes_prot.c debug.c ## XDR -libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c +libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c if SYMVERS libtirpc_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtirpc.map diff --git a/src/libtirpc.map b/src/libtirpc.map index 449b769..855d6b3 100644 --- a/src/libtirpc.map +++ b/src/libtirpc.map @@ -321,6 +321,7 @@ TIRPC_0.3.3 { __key_encryptsession_pk_LOCAL; __key_gendes_LOCAL; authdes_pk_create; + xdr_sizeof; } TIRPC_0.3.2; TIRPC_PRIVATE { diff --git a/src/xdr_sizeof.c b/src/xdr_sizeof.c index cc5414b..4ecc977 100644 --- a/src/xdr_sizeof.c +++ b/src/xdr_sizeof.c @@ -90,7 +90,7 @@ x_inline(xdrs, len) if (xdrs->x_op != XDR_ENCODE) { return (NULL); } - if (len < (u_int)xdrs->x_base) { + if (len < (u_int) (long int) xdrs->x_base) { /* x_private was already allocated */ xdrs->x_handy += len; return ((int32_t *) xdrs->x_private); @@ -102,7 +102,7 @@ x_inline(xdrs, len) xdrs->x_base = 0; return (NULL); } - xdrs->x_base = (caddr_t) len; + xdrs->x_base = (void *) (long) len; xdrs->x_handy += len; return ((int32_t *) xdrs->x_private); } diff --git a/tirpc/rpc/xdr.h b/tirpc/rpc/xdr.h index 64069ab..904e5bb 100644 --- a/tirpc/rpc/xdr.h +++ b/tirpc/rpc/xdr.h @@ -327,6 +327,7 @@ extern bool_t xdr_hyper(XDR *, quad_t *); extern bool_t xdr_u_hyper(XDR *, u_quad_t *); extern bool_t xdr_longlong_t(XDR *, quad_t *); extern bool_t xdr_u_longlong_t(XDR *, u_quad_t *); +extern u_long xdr_sizeof(xdrproc_t, void *); #ifdef __cplusplus } #endif ++++++ 011-authdes_create.patch ++++++ diff --git a/src/rpc_soc.c b/src/rpc_soc.c index e146ed4..9d555d3 100644 --- a/src/rpc_soc.c +++ b/src/rpc_soc.c @@ -531,7 +531,6 @@ authdes_create(servername, window, syncaddr, ckey) struct sockaddr *syncaddr; /* optional hostaddr to sync with */ des_block *ckey; /* optional conversation key to use */ { - AUTH *dummy; AUTH *nauth; char hostname[NI_MAXHOST]; @@ -540,16 +539,20 @@ authdes_create(servername, window, syncaddr, ckey) * Change addr to hostname, because that is the way * new interface takes it. */ - if (getnameinfo(syncaddr, sizeof(syncaddr), hostname, - sizeof hostname, NULL, 0, 0) != 0) - goto fallback; - + switch (syncaddr->sa_family) { + case AF_INET: + if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname, + sizeof hostname, NULL, 0, 0) != 0) + goto fallback; + break; + default: + goto fallback; + } nauth = authdes_seccreate(servername, window, hostname, ckey); return (nauth); } fallback: - dummy = authdes_seccreate(servername, window, NULL, ckey); - return (dummy); + return authdes_seccreate(servername, window, NULL, ckey); } /* ++++++ 012-xp_sock.patch ++++++ diff --git a/tirpc/rpc/svc.h b/tirpc/rpc/svc.h index 8273c95..f647095 100644 --- a/tirpc/rpc/svc.h +++ b/tirpc/rpc/svc.h @@ -88,6 +88,7 @@ enum xprt_stat { */ typedef struct __rpc_svcxprt { int xp_fd; +#define xp_sock xp_fd u_short xp_port; /* associated port number */ const struct xp_ops { /* receive incoming requests */
