diff --git a/libtirpc-new-path-rpcbindsock.patch b/001-new-rpcbindsock-path.patch similarity index 100% rename from libtirpc-new-path-rpcbindsock.patch rename to 001-new-rpcbindsock-path.patch diff --git a/002-old-automake.patch b/002-old-automake.patch deleted file mode 100644 index 2641f6b..0000000 --- a/002-old-automake.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index 290c635..a6a202e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1,5 +1,4 @@ - AC_INIT(libtirpc, 1.0.1) --AM_INIT_AUTOMAKE([silent-rules]) -+AM_INIT_AUTOMAKE --AM_SILENT_RULES([yes]) - AC_CONFIG_SRCDIR([src/auth_des.c]) - AC_CONFIG_MACRO_DIR([m4]) diff --git a/003-rpc-types.patch b/003-rpc-types.patch new file mode 100644 index 0000000..fd72026 --- /dev/null +++ b/003-rpc-types.patch @@ -0,0 +1,47 @@ +From cc6d414c93d05da7703c377dd7524fd97719b21c Mon Sep 17 00:00:00 2001 +From: Thorsten Kukuk +Date: Mon, 13 Nov 2017 15:50:32 +0100 +Subject: [PATCH 1/1] Add some typedefs to rpc/types.h to allow applications be + compiled with -std=iso9899:1990 + +Signed-off-by: Thorsten Kukuk +--- + tirpc/rpc/types.h | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/tirpc/rpc/types.h b/tirpc/rpc/types.h +index 52c30a2..f069efa 100644 +--- a/tirpc/rpc/types.h ++++ b/tirpc/rpc/types.h +@@ -65,6 +65,28 @@ typedef int32_t rpc_inline_t; + #define mem_alloc(bsize) calloc(1, bsize) + #define mem_free(ptr, bsize) free(ptr) + ++ ++#if defined __APPLE_CC__ || defined __FreeBSD__ ++# define __u_char_defined ++# define __daddr_t_defined ++#endif ++ ++#ifndef __u_char_defined ++typedef __u_char u_char; ++typedef __u_short u_short; ++typedef __u_int u_int; ++typedef __u_long u_long; ++typedef __quad_t quad_t; ++typedef __u_quad_t u_quad_t; ++typedef __fsid_t fsid_t; ++# define __u_char_defined ++#endif ++#ifndef __daddr_t_defined ++typedef __daddr_t daddr_t; ++typedef __caddr_t caddr_t; ++# define __daddr_t_defined ++#endif ++ + #include + #include + #include +-- +2.12.3 + diff --git a/004-replace-bzero-with-memset.patch b/004-replace-bzero-with-memset.patch new file mode 100644 index 0000000..fe6b0f3 --- /dev/null +++ b/004-replace-bzero-with-memset.patch @@ -0,0 +1,62 @@ +From 5356b63005e9d8169e0399cb76f26fbd29a78dee Mon Sep 17 00:00:00 2001 +From: Joshua Kinard +Date: Wed, 23 Aug 2017 14:31:36 -0400 +Subject: [PATCH 1/2] Replace bzero() calls with equivalent memset() calls + +As annotated in the bzero(3) man page, bzero() was marked as LEGACY in +POSIX.1-2001 and removed in POSIX.1-2008, and should be replaced with +memset() calls to write zeros to a memory region. The attached patch +replaces two bzero() calls and one __bzero() call in libtirpc with +equivalent memset() calls. The latter replacement fixes a compile error +under uclibc-ng, which lacks a definition for __bzero() + +Signed-off-by: Joshua Kinard +Signed-off-by: Steve Dickson +--- + src/auth_time.c | 2 +- + src/des_impl.c | 2 +- + src/svc_auth_des.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/auth_time.c b/src/auth_time.c +index 7f83ab4..69400bc 100644 +--- a/src/auth_time.c ++++ b/src/auth_time.c +@@ -317,7 +317,7 @@ __rpc_get_time_offset(td, srv, thost, uaddr, netid) + sprintf(ipuaddr, "%d.%d.%d.%d.0.111", a1, a2, a3, a4); + useua = &ipuaddr[0]; + +- bzero((char *)&sin, sizeof(sin)); ++ memset(&sin, 0, sizeof(sin)); + if (uaddr_to_sockaddr(useua, &sin)) { + msg("unable to translate uaddr to sockaddr."); + if (needfree) +diff --git a/src/des_impl.c b/src/des_impl.c +index 9dbccaf..15bec2a 100644 +--- a/src/des_impl.c ++++ b/src/des_impl.c +@@ -588,7 +588,7 @@ _des_crypt (char *buf, unsigned len, struct desparams *desp) + } + tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0; + tbuf[0] = tbuf[1] = 0; +- __bzero (schedule, sizeof (schedule)); ++ memset (schedule, 0, sizeof (schedule)); + + return (1); + } +diff --git a/src/svc_auth_des.c b/src/svc_auth_des.c +index 2e90146..19a7c60 100644 +--- a/src/svc_auth_des.c ++++ b/src/svc_auth_des.c +@@ -356,7 +356,7 @@ cache_init() + + authdes_cache = (struct cache_entry *) + mem_alloc(sizeof(struct cache_entry) * AUTHDES_CACHESZ); +- bzero((char *)authdes_cache, ++ memset(authdes_cache, 0, + sizeof(struct cache_entry) * AUTHDES_CACHESZ); + + authdes_lru = (short *)mem_alloc(sizeof(short) * AUTHDES_CACHESZ); +-- +2.12.3 + diff --git a/005-libtirpc-1.0.2-rc1.patch b/005-libtirpc-1.0.2-rc1.patch deleted file mode 100644 index 216755f..0000000 --- a/005-libtirpc-1.0.2-rc1.patch +++ /dev/null @@ -1,365 +0,0 @@ -diff --git a/src/svc.c b/src/svc.c -index 9c41445..b59467b 100644 ---- a/src/svc.c -+++ b/src/svc.c -@@ -99,7 +99,7 @@ xprt_register (xprt) - { - __svc_xports = (SVCXPRT **) calloc (_rpc_dtablesize(), sizeof (SVCXPRT *)); - if (__svc_xports == NULL) -- return; -+ goto unlock; - } - if (sock < _rpc_dtablesize()) - { -@@ -120,14 +120,14 @@ xprt_register (xprt) - svc_pollfd[i].fd = sock; - svc_pollfd[i].events = (POLLIN | POLLPRI | - POLLRDNORM | POLLRDBAND); -- return; -+ goto unlock; - } - - new_svc_pollfd = (struct pollfd *) realloc (svc_pollfd, - sizeof (struct pollfd) - * (svc_max_pollfd + 1)); - if (new_svc_pollfd == NULL) /* Out of memory */ -- return; -+ goto unlock; - svc_pollfd = new_svc_pollfd; - ++svc_max_pollfd; - -@@ -135,6 +135,7 @@ xprt_register (xprt) - svc_pollfd[svc_max_pollfd - 1].events = (POLLIN | POLLPRI | - POLLRDNORM | POLLRDBAND); - } -+unlock: - rwlock_unlock (&svc_fd_lock); - } - -diff --git a/src/svc_auth_gss.c b/src/svc_auth_gss.c -index b6aa407..bece46a 100644 ---- a/src/svc_auth_gss.c -+++ b/src/svc_auth_gss.c -@@ -129,6 +129,8 @@ struct svc_rpc_gss_data { - ((struct svc_rpc_gss_data *)(auth)->svc_ah_private) - - /* Global server credentials. */ -+static u_int _svcauth_req_time = 0; -+static gss_OID_set_desc _svcauth_oid_set = {1, GSS_C_NULL_OID }; - static gss_cred_id_t _svcauth_gss_creds; - static gss_name_t _svcauth_gss_name = GSS_C_NO_NAME; - static char * _svcauth_svc_name = NULL; -@@ -167,6 +169,7 @@ svcauth_gss_import_name(char *service) - gss_name_t name; - gss_buffer_desc namebuf; - OM_uint32 maj_stat, min_stat; -+ bool_t result; - - gss_log_debug("in svcauth_gss_import_name()"); - -@@ -181,22 +184,21 @@ svcauth_gss_import_name(char *service) - maj_stat, min_stat); - return (FALSE); - } -- if (svcauth_gss_set_svc_name(name) != TRUE) { -- gss_release_name(&min_stat, &name); -- return (FALSE); -- } -- return (TRUE); -+ result = svcauth_gss_set_svc_name(name); -+ gss_release_name(&min_stat, &name); -+ return result; - } - - static bool_t --svcauth_gss_acquire_cred(u_int req_time, gss_OID_set_desc *oid_set) -+svcauth_gss_acquire_cred(void) - { - OM_uint32 maj_stat, min_stat; - - gss_log_debug("in svcauth_gss_acquire_cred()"); - -- maj_stat = gss_acquire_cred(&min_stat, _svcauth_gss_name, req_time, -- oid_set, GSS_C_ACCEPT, -+ maj_stat = gss_acquire_cred(&min_stat, _svcauth_gss_name, -+ _svcauth_req_time, &_svcauth_oid_set, -+ GSS_C_ACCEPT, - &_svcauth_gss_creds, NULL, NULL); - - if (maj_stat != GSS_S_COMPLETE) { -@@ -300,6 +302,8 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst, - NULL, - &gd->deleg); - -+ xdr_free((xdrproc_t)xdr_rpc_gss_init_args, (caddr_t)&recv_tok); -+ - if (gr->gr_major != GSS_S_COMPLETE && - gr->gr_major != GSS_S_CONTINUE_NEEDED) { - gss_log_status("svcauth_gss_accept_sec_context: accept_sec_context", -@@ -352,8 +356,11 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst, - return (FALSE); - - rqst->rq_xprt->xp_verf.oa_flavor = RPCSEC_GSS; -- rqst->rq_xprt->xp_verf.oa_base = checksum.value; -+ memcpy(rqst->rq_xprt->xp_verf.oa_base, checksum.value, -+ checksum.length); - rqst->rq_xprt->xp_verf.oa_length = checksum.length; -+ -+ gss_release_buffer(&min_stat, &checksum); - } - return (TRUE); - } -@@ -435,10 +442,13 @@ svcauth_gss_nextverf(struct svc_req *rqst, u_int num) - maj_stat, min_stat); - return (FALSE); - } -+ - rqst->rq_xprt->xp_verf.oa_flavor = RPCSEC_GSS; -- rqst->rq_xprt->xp_verf.oa_base = (caddr_t)checksum.value; -+ memcpy(rqst->rq_xprt->xp_verf.oa_base, checksum.value, checksum.length); - rqst->rq_xprt->xp_verf.oa_length = (u_int)checksum.length; - -+ gss_release_buffer(&min_stat, &checksum); -+ - return (TRUE); - } - -@@ -568,6 +578,8 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - gss_qop_t qop; - struct svcauth_gss_cache_entry **ce; - time_t now; -+ enum auth_stat result = AUTH_OK; -+ OM_uint32 min_stat; - - gss_log_debug("in svcauth_gss()"); - -@@ -621,19 +633,25 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - XDR_DESTROY(&xdrs); - - /* Check version. */ -- if (gc->gc_v != RPCSEC_GSS_VERSION) -- return (AUTH_BADCRED); -+ if (gc->gc_v != RPCSEC_GSS_VERSION) { -+ result = AUTH_BADCRED; -+ goto out; -+ } - - /* Check RPCSEC_GSS service. */ - if (gc->gc_svc != RPCSEC_GSS_SVC_NONE && - gc->gc_svc != RPCSEC_GSS_SVC_INTEGRITY && -- gc->gc_svc != RPCSEC_GSS_SVC_PRIVACY) -- return (AUTH_BADCRED); -+ gc->gc_svc != RPCSEC_GSS_SVC_PRIVACY) { -+ result = AUTH_BADCRED; -+ goto out; -+ } - - /* Check sequence number. */ - if (gd->established) { -- if (gc->gc_seq > MAXSEQ) -- return (RPCSEC_GSS_CTXPROBLEM); -+ if (gc->gc_seq > MAXSEQ) { -+ result = RPCSEC_GSS_CTXPROBLEM; -+ goto out; -+ } - - if ((offset = gd->seqlast - gc->gc_seq) < 0) { - gd->seqlast = gc->gc_seq; -@@ -643,7 +661,8 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - } - else if (offset >= gd->win || (gd->seqmask & (1 << offset))) { - *no_dispatch = 1; -- return (RPCSEC_GSS_CTXPROBLEM); -+ result = RPCSEC_GSS_CTXPROBLEM; -+ goto out; - } - gd->seq = gc->gc_seq; - gd->seqmask |= (1 << offset); -@@ -654,35 +673,52 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - rqst->rq_svcname = (char *)gd->ctx; - } - -+ rqst->rq_xprt->xp_verf.oa_base = msg->rm_call.cb_verf.oa_base; -+ - /* Handle RPCSEC_GSS control procedure. */ - switch (gc->gc_proc) { - - case RPCSEC_GSS_INIT: - case RPCSEC_GSS_CONTINUE_INIT: -- if (rqst->rq_proc != NULLPROC) -- return (AUTH_FAILED); /* XXX ? */ -+ if (rqst->rq_proc != NULLPROC) { -+ result = AUTH_FAILED; /* XXX ? */ -+ break; -+ } - - if (_svcauth_gss_name == GSS_C_NO_NAME) { -- if (!svcauth_gss_import_name("nfs")) -- return (AUTH_FAILED); -+ if (!svcauth_gss_import_name("nfs")) { -+ result = AUTH_FAILED; -+ break; -+ } - } - -- if (!svcauth_gss_acquire_cred(0, GSS_C_NULL_OID_SET)) -- return (AUTH_FAILED); -+ if (!svcauth_gss_acquire_cred()) { -+ result = AUTH_FAILED; -+ break; -+ } - -- if (!svcauth_gss_accept_sec_context(rqst, &gr)) -- return (AUTH_REJECTEDCRED); -+ if (!svcauth_gss_accept_sec_context(rqst, &gr)) { -+ result = AUTH_REJECTEDCRED; -+ break; -+ } - -- if (!svcauth_gss_nextverf(rqst, htonl(gr.gr_win))) -- return (AUTH_FAILED); -+ if (!svcauth_gss_nextverf(rqst, htonl(gr.gr_win))) { -+ result = AUTH_FAILED; -+ break; -+ } - - *no_dispatch = TRUE; - - call_stat = svc_sendreply(rqst->rq_xprt, - (xdrproc_t)xdr_rpc_gss_init_res, (caddr_t)&gr); - -- if (!call_stat) -- return (AUTH_FAILED); -+ gss_release_buffer(&min_stat, &gr.gr_token); -+ free(gr.gr_ctx.value); -+ -+ if (!call_stat) { -+ result = AUTH_FAILED; -+ break; -+ } - - if (gr.gr_major == GSS_S_COMPLETE) - gd->established = TRUE; -@@ -690,27 +726,37 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - break; - - case RPCSEC_GSS_DATA: -- if (!svcauth_gss_validate(gd, msg, &qop)) -- return (RPCSEC_GSS_CREDPROBLEM); -+ if (!svcauth_gss_validate(gd, msg, &qop)) { -+ result = RPCSEC_GSS_CREDPROBLEM; -+ break; -+ } - -- if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq))) -- return (AUTH_FAILED); -+ if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq))) { -+ result = AUTH_FAILED; -+ break; -+ } - - if (!gd->callback_done) { - gd->callback_done = TRUE; - gd->sec.qop = qop; - (void)rpc_gss_num_to_qop(gd->rcred.mechanism, - gd->sec.qop, &gd->rcred.qop); -- if (!svcauth_gss_callback(rqst, gd)) -- return (AUTH_REJECTEDCRED); -+ if (!svcauth_gss_callback(rqst, gd)) { -+ result = AUTH_REJECTEDCRED; -+ break; -+ } - } - - if (gd->locked) { - if (gd->rcred.service != -- _rpc_gss_svc_to_service(gc->gc_svc)) -- return (AUTH_FAILED); -- if (gd->sec.qop != qop) -- return (AUTH_BADVERF); -+ _rpc_gss_svc_to_service(gc->gc_svc)) { -+ result = AUTH_FAILED; -+ break; -+ } -+ if (gd->sec.qop != qop) { -+ result = AUTH_BADVERF; -+ break; -+ } - } - - if (gd->sec.qop != qop) { -@@ -724,17 +770,25 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - break; - - case RPCSEC_GSS_DESTROY: -- if (rqst->rq_proc != NULLPROC) -- return (AUTH_FAILED); /* XXX ? */ -+ if (rqst->rq_proc != NULLPROC) { -+ result = AUTH_FAILED; /* XXX ? */ -+ break; -+ } - -- if (!svcauth_gss_validate(gd, msg, &qop)) -- return (RPCSEC_GSS_CREDPROBLEM); -+ if (!svcauth_gss_validate(gd, msg, &qop)) { -+ result = RPCSEC_GSS_CREDPROBLEM; -+ break; -+ } - -- if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq))) -- return (AUTH_FAILED); -+ if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq))) { -+ result = AUTH_FAILED; -+ break; -+ } - -- if (!svcauth_gss_release_cred()) -- return (AUTH_FAILED); -+ if (!svcauth_gss_release_cred()) { -+ result = AUTH_FAILED; -+ break; -+ } - - SVCAUTH_DESTROY(&SVC_XP_AUTH(rqst->rq_xprt)); - SVC_XP_AUTH(rqst->rq_xprt).svc_ah_ops = svc_auth_none.svc_ah_ops; -@@ -743,10 +797,12 @@ _svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg, bool_t *no_dispatch) - break; - - default: -- return (AUTH_REJECTEDCRED); -+ result = AUTH_REJECTEDCRED; - break; - } -- return (AUTH_OK); -+out: -+ xdr_free((xdrproc_t)xdr_rpc_gss_cred, (caddr_t)gc); -+ return result; - } - - static bool_t -@@ -890,7 +946,6 @@ bool_t - rpc_gss_set_svc_name(char *principal, char *mechanism, u_int req_time, - u_int UNUSED(program), u_int UNUSED(version)) - { -- gss_OID_set_desc oid_set; - rpc_gss_OID oid; - char *save; - -@@ -902,14 +957,13 @@ rpc_gss_set_svc_name(char *principal, char *mechanism, u_int req_time, - - if (!rpc_gss_mech_to_oid(mechanism, &oid)) - goto out_err; -- oid_set.count = 1; -- oid_set.elements = (gss_OID)oid; - - if (!svcauth_gss_import_name(principal)) - goto out_err; -- if (!svcauth_gss_acquire_cred(req_time, &oid_set)) -- goto out_err; - -+ _svcauth_req_time = req_time; -+ _svcauth_oid_set.count = 1; -+ _svcauth_oid_set.elements = (gss_OID)oid; - free(_svcauth_svc_name); - _svcauth_svc_name = save; - return TRUE; diff --git a/005-missing-includes.patch b/005-missing-includes.patch new file mode 100644 index 0000000..05f5adf --- /dev/null +++ b/005-missing-includes.patch @@ -0,0 +1,29 @@ +From 75a49eabb3c71ee8f4a579df4e0199694d086e28 Mon Sep 17 00:00:00 2001 +From: Thorsten Kukuk +Date: Tue, 14 Nov 2017 14:41:33 +0100 +Subject: [PATCH 1/1] Include header files in rpc/pmap_clnt.h, so that this + header file can be used standalone as in the past with sunrpc. + +Signed-off-by: Thorsten Kukuk +--- + tirpc/rpc/pmap_clnt.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tirpc/rpc/pmap_clnt.h b/tirpc/rpc/pmap_clnt.h +index 6abd583..cf1ab61 100644 +--- a/tirpc/rpc/pmap_clnt.h ++++ b/tirpc/rpc/pmap_clnt.h +@@ -64,6 +64,10 @@ + #ifndef _RPC_PMAP_CLNT_H_ + #define _RPC_PMAP_CLNT_H_ + ++#include ++#include ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif +-- +2.12.3 + diff --git a/006-Remove-old-meanwhile-wrong-comment-about-FD_SETSIZE-.patch b/006-Remove-old-meanwhile-wrong-comment-about-FD_SETSIZE-.patch deleted file mode 100644 index 92c30e4..0000000 --- a/006-Remove-old-meanwhile-wrong-comment-about-FD_SETSIZE-.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ee37905bd6221576deabd9413403c0dee079b605 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Thu, 25 Feb 2016 12:48:24 +0100 -Subject: [PATCH 1/5] Remove old, meanwhile wrong comment about FD_SETSIZE and - _rpc_dtablesize(). Remove the local prototype for _rpc_dtablesize() but use - the public header instead. - -Signed-off-by: Thorsten Kukuk ---- - src/rpc_dtablesize.c | 12 ++---------- - 1 file changed, 2 insertions(+), 10 deletions(-) - -diff --git a/src/rpc_dtablesize.c b/src/rpc_dtablesize.c -index 13d320c..3fe503a 100644 ---- a/src/rpc_dtablesize.c -+++ b/src/rpc_dtablesize.c -@@ -27,22 +27,14 @@ - */ - - #include -- - #include -- --int _rpc_dtablesize(void); /* XXX */ -+#include -+#include - - /* - * Cache the result of getdtablesize(), so we don't have to do an - * expensive system call every time. - */ --/* -- * XXX In FreeBSD 2.x, you can have the maximum number of open file -- * descriptors be greater than FD_SETSIZE (which us 256 by default). -- * -- * Since old programs tend to use this call to determine the first arg -- * for _select(), having this return > FD_SETSIZE is a Bad Idea(TM)! -- */ - int - _rpc_dtablesize(void) - { --- -1.8.5.6 - diff --git a/007-Change-rtime-function-to-use-poll-instead-of-select.patch b/007-Change-rtime-function-to-use-poll-instead-of-select.patch deleted file mode 100644 index 1f24c68..0000000 --- a/007-Change-rtime-function-to-use-poll-instead-of-select.patch +++ /dev/null @@ -1,89 +0,0 @@ -From f506559f6b2dedbb54ee59d0230d451a9dce213c Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Thu, 25 Feb 2016 12:51:50 +0100 -Subject: [PATCH 2/5] Change rtime() function to use poll() instead of - select(). - -Signed-off-by: Thorsten Kukuk ---- - src/rtime.c | 29 ++++++++++++++++------------- - 1 file changed, 16 insertions(+), 13 deletions(-) - -diff --git a/src/rtime.c b/src/rtime.c -index c34e0af..8141ae8 100644 ---- a/src/rtime.c -+++ b/src/rtime.c -@@ -46,6 +46,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -67,7 +68,8 @@ rtime(addrp, timep, timeout) - struct timeval *timeout; - { - int s; -- fd_set readfds; -+ struct pollfd fd; -+ int milliseconds; - int res; - unsigned long thetime; - struct sockaddr_in from; -@@ -94,31 +96,32 @@ rtime(addrp, timep, timeout) - addrp->sin_port = serv->s_port; - - if (type == SOCK_DGRAM) { -- res = sendto(s, (char *)&thetime, sizeof(thetime), 0, -+ res = sendto(s, (char *)&thetime, sizeof(thetime), 0, - (struct sockaddr *)addrp, sizeof(*addrp)); - if (res < 0) { - do_close(s); -- return(-1); -+ return(-1); - } -- do { -- FD_ZERO(&readfds); -- FD_SET(s, &readfds); -- res = select(_rpc_dtablesize(), &readfds, -- (fd_set *)NULL, (fd_set *)NULL, timeout); -- } while (res < 0 && errno == EINTR); -+ -+ milliseconds = (timeout->tv_sec * 1000) + (timeout->tv_usec / 1000); -+ fd.fd = s; -+ fd.events = POLLIN; -+ do -+ res = poll (&fd, 1, milliseconds); -+ while (res < 0 && errno == EINTR); - if (res <= 0) { - if (res == 0) { - errno = ETIMEDOUT; - } - do_close(s); -- return(-1); -+ return(-1); - } - fromlen = sizeof(from); -- res = recvfrom(s, (char *)&thetime, sizeof(thetime), 0, -+ res = recvfrom(s, (char *)&thetime, sizeof(thetime), 0, - (struct sockaddr *)&from, &fromlen); - do_close(s); - if (res < 0) { -- return(-1); -+ return(-1); - } - } else { - if (connect(s, (struct sockaddr *)addrp, sizeof(*addrp)) < 0) { -@@ -133,7 +136,7 @@ rtime(addrp, timep, timeout) - } - if (res != sizeof(thetime)) { - errno = EIO; -- return(-1); -+ return(-1); - } - thetime = ntohl(thetime); - timep->tv_sec = thetime - TOFFSET; --- -1.8.5.6 - diff --git a/008-Add-parameters-to-local-prototypes-to-fix-compiler-w.patch b/008-Add-parameters-to-local-prototypes-to-fix-compiler-w.patch deleted file mode 100644 index 9bb7071..0000000 --- a/008-Add-parameters-to-local-prototypes-to-fix-compiler-w.patch +++ /dev/null @@ -1,36 +0,0 @@ -From f4baf06134d46512fe36bcc1f63941bd928450e7 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Thu, 25 Feb 2016 12:55:42 +0100 -Subject: [PATCH 3/5] Add parameters to local prototypes to fix compiler - warnings and avoid portability issues about wrong compiler assumptions. - -Signed-off-by: Thorsten Kukuk ---- - src/svc_auth_des.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/svc_auth_des.c b/src/svc_auth_des.c -index 5bc264c..2e90146 100644 ---- a/src/svc_auth_des.c -+++ b/src/svc_auth_des.c -@@ -86,13 +86,13 @@ static struct cache_entry *authdes_cache/* [AUTHDES_CACHESZ] */; - static short *authdes_lru/* [AUTHDES_CACHESZ] */; - - static void cache_init(); /* initialize the cache */ --static short cache_spot(); /* find an entry in the cache */ --static void cache_ref(/*short sid*/); /* note that sid was ref'd */ -+static short cache_spot(des_block *key, char *name, struct timeval *timestamp); /* find an entry in the cache */ -+static void cache_ref(short sid); /* note that sid was ref'd */ - --static void invalidate(); /* invalidate entry in cache */ -+static void invalidate(char *cred); /* invalidate entry in cache */ - - /* -- * cache statistics -+ * cache statistics - */ - static struct { - u_long ncachehits; /* times cache hit, and is not replay */ --- -1.8.5.6 - diff --git a/009-makefd_xprt-checks-that-the-filedesriptor-is-lower-t.patch b/009-makefd_xprt-checks-that-the-filedesriptor-is-lower-t.patch deleted file mode 100644 index 7f4481c..0000000 --- a/009-makefd_xprt-checks-that-the-filedesriptor-is-lower-t.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 6be6ad4fe3ada0b1b80228de0fde4ebad9879915 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Thu, 25 Feb 2016 12:59:00 +0100 -Subject: [PATCH 4/5] makefd_xprt() checks that the filedesriptor is lower than - FD_SETSIZE. But with tirpc now using poll(), this limitation does not exist - anymore. Remove the check completly. - -Signed-off-by: Thorsten Kukuk ---- - src/svc_vc.c | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) - -diff --git a/src/svc_vc.c b/src/svc_vc.c -index 6ae613d..7415244 100644 ---- a/src/svc_vc.c -+++ b/src/svc_vc.c -@@ -270,14 +270,8 @@ makefd_xprt(fd, sendsize, recvsize) - struct cf_conn *cd; - const char *netid; - struct __rpc_sockinfo si; -- -- assert(fd != -1); - -- if (fd >= FD_SETSIZE) { -- warnx("svc_vc: makefd_xprt: fd too high\n"); -- xprt = NULL; -- goto done; -- } -+ assert(fd != -1); - - xprt = mem_alloc(sizeof(SVCXPRT)); - if (xprt == NULL) { --- -1.8.5.6 - diff --git a/010-The-goto-again-statement-was-an-left-over-from-the-p.patch b/010-The-goto-again-statement-was-an-left-over-from-the-p.patch deleted file mode 100644 index 6726b55..0000000 --- a/010-The-goto-again-statement-was-an-left-over-from-the-p.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 3f4eb06275519308e74e103a0c7681adbd13b7b3 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Thu, 25 Feb 2016 13:01:20 +0100 -Subject: [PATCH 5/5] The goto again statement was an left over from the port - to poll() interface and needs to be removed. Else we will end in an endless - loop in case we run out of filedescriptors. - -Signed-off-by: Thorsten Kukuk ---- - src/svc_vc.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/svc_vc.c b/src/svc_vc.c -index 7415244..d2135c5 100644 ---- a/src/svc_vc.c -+++ b/src/svc_vc.c -@@ -346,7 +346,6 @@ again: - descriptors. */ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; - nanosleep (&ts, NULL); -- goto again; - } - return (FALSE); - } --- -1.8.5.6 - diff --git a/012-libtirpc-needs-rpcsvc-nis.h-for-compiling-but-does-n.patch b/012-libtirpc-needs-rpcsvc-nis.h-for-compiling-but-does-n.patch deleted file mode 100644 index e31b04b..0000000 --- a/012-libtirpc-needs-rpcsvc-nis.h-for-compiling-but-does-n.patch +++ /dev/null @@ -1,143 +0,0 @@ -From c4230a45c0daa8f65a3f777d183cba4b175a0c68 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Mon, 14 Mar 2016 11:57:08 +0100 -Subject: [PATCH 2/2] libtirpc needs rpcsvc/nis.h for compiling, but does not - provide this head file. It's only provided by glibc, if the sunrpc code is - not marked as deprecated, and by libnsl. But libnsl needs libtirpc to compile - ... - -Since we only need the nis_server * struct, the solution is to -create an internal minimal nis.h which only contains this struct. - -Signed-off-by: Thorsten Kukuk ---- - src/auth_des.c | 4 ++-- - src/auth_time.c | 4 ++-- - src/nis.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/rpc_soc.c | 2 +- - 4 files changed, 75 insertions(+), 5 deletions(-) - create mode 100644 src/nis.h - -diff --git a/src/auth_des.c b/src/auth_des.c -index 4d3639e..af2f61f 100644 ---- a/src/auth_des.c -+++ b/src/auth_des.c -@@ -46,8 +46,8 @@ - #include - #include - #include --#undef NIS --#include -+ -+#include "nis.h" - - #if defined(LIBC_SCCS) && !defined(lint) - #endif -diff --git a/src/auth_time.c b/src/auth_time.c -index 10e58eb..7f83ab4 100644 ---- a/src/auth_time.c -+++ b/src/auth_time.c -@@ -44,8 +44,8 @@ - #include - //#include - #include --#undef NIS --#include -+ -+#include "nis.h" - - - #ifdef TESTING -diff --git a/src/nis.h b/src/nis.h -new file mode 100644 -index 0000000..588c041 ---- /dev/null -+++ b/src/nis.h -@@ -0,0 +1,70 @@ -+/* -+ * Copyright (c) 2010, Oracle America, Inc. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions are -+ * met: -+ * -+ * * Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * * Redistributions in binary form must reproduce the above -+ * copyright notice, this list of conditions and the following -+ * disclaimer in the documentation and/or other materials -+ * provided with the distribution. -+ * * Neither the name of the "Oracle America, Inc." nor the names of its -+ * contributors may be used to endorse or promote products derived -+ * from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+#ifndef _INTERNAL_NIS_H -+#define _INTERNAL_NIS_H 1 -+ -+/* This file only contains the definition of nis_server, to be -+ able to compile libtirpc without the need to have a glibc -+ with sunrpc or a libnsl already installed. */ -+ -+#define NIS_PK_NONE 0 -+ -+struct nis_attr { -+ char *zattr_ndx; -+ struct { -+ u_int zattr_val_len; -+ char *zattr_val_val; -+ } zattr_val; -+}; -+typedef struct nis_attr nis_attr; -+ -+typedef char *nis_name; -+ -+struct endpoint { -+ char *uaddr; -+ char *family; -+ char *proto; -+}; -+typedef struct endpoint endpoint; -+ -+struct nis_server { -+ nis_name name; -+ struct { -+ u_int ep_len; -+ endpoint *ep_val; -+ } ep; -+ uint32_t key_type; -+ netobj pkey; -+}; -+typedef struct nis_server nis_server; -+ -+#endif /* ! _INTERNAL_NIS_H */ -diff --git a/src/rpc_soc.c b/src/rpc_soc.c -index 1ec7b3f..ed0892a 100644 ---- a/src/rpc_soc.c -+++ b/src/rpc_soc.c -@@ -61,8 +61,8 @@ - #include - #include - #include --#include - -+#include "nis.h" - #include "rpc_com.h" - - extern mutex_t rpcsoc_lock; --- -1.8.5.6 - diff --git a/013-If-we-don-t-compile-in-YP-support-don-t-include-YP-h.patch b/013-If-we-don-t-compile-in-YP-support-don-t-include-YP-h.patch deleted file mode 100644 index 505a09e..0000000 --- a/013-If-we-don-t-compile-in-YP-support-don-t-include-YP-h.patch +++ /dev/null @@ -1,29 +0,0 @@ -From cff41dbac81564e8305d656ca771fb0ead9f8bf8 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Mon, 14 Mar 2016 12:51:38 +0100 -Subject: [PATCH 3/3] If we don't compile in YP support, don't include YP - header files. - -Signed-off-by: Thorsten Kukuk ---- - src/getpublickey.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/getpublickey.c b/src/getpublickey.c -index 764a5f9..8cf4dc2 100644 ---- a/src/getpublickey.c -+++ b/src/getpublickey.c -@@ -38,8 +38,10 @@ - #include - #include - #include -+#ifdef YP - #include - #include -+#endif - #include - #include - --- -1.8.5.6 - diff --git a/014-Add-des_crypt.c-and-des_impl.c-to-become-independent.patch b/014-Add-des_crypt.c-and-des_impl.c-to-become-independent.patch deleted file mode 100644 index d73ae11..0000000 --- a/014-Add-des_crypt.c-and-des_impl.c-to-become-independent.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 9d9907d55dcc9cc380c5b552e0abc6c9ff4faf75 Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Mon, 14 Mar 2016 13:31:34 +0100 -Subject: [PATCH 4/4] Add des_crypt.c and des_impl.c to become independent of - deprecated functions of glibc. - -Signed-off-by: Thorsten Kukuk ---- - src/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Makefile.am b/src/Makefile.am -index e4ed8aa..fba2aa4 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -24,7 +24,7 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln - rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \ - svc_auth_des.c \ - svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \ -- auth_time.c auth_des.c authdes_prot.c debug.c -+ auth_time.c auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.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 xdr_sizeof.c --- -1.8.5.6 - diff --git a/015-Fix-includes-to-compile-without-deprecated-glibc-fun.patch b/015-Fix-includes-to-compile-without-deprecated-glibc-fun.patch deleted file mode 100644 index 5de6edc..0000000 --- a/015-Fix-includes-to-compile-without-deprecated-glibc-fun.patch +++ /dev/null @@ -1,41 +0,0 @@ -From d5e4d0651f9ecc8e7e4110f080a862746d9baa0a Mon Sep 17 00:00:00 2001 -From: Thorsten Kukuk -Date: Mon, 14 Mar 2016 13:43:54 +0100 -Subject: [PATCH 5/5] Fix includes to compile without deprecated glibc - functions - -Signed-off-by: Thorsten Kukuk ---- - src/des_impl.c | 3 ++- - tirpc/rpc/des.h | 2 +- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/des_impl.c b/src/des_impl.c -index c5b7ed6..9dbccaf 100644 ---- a/src/des_impl.c -+++ b/src/des_impl.c -@@ -6,7 +6,8 @@ - /* see to obtain a copy. */ - #include - #include --#include -+#include -+#include - - - static const uint32_t des_SPtrans[8][64] = -diff --git a/tirpc/rpc/des.h b/tirpc/rpc/des.h -index d2881ad..018aa48 100644 ---- a/tirpc/rpc/des.h -+++ b/tirpc/rpc/des.h -@@ -82,6 +82,6 @@ struct desparams { - /* - * Software DES. - */ --extern int _des_crypt( char *, int, struct desparams * ); -+extern int _des_crypt( char *, unsigned, struct desparams * ); - - #endif --- -1.8.5.6 - diff --git a/explicit_bzero.patch b/explicit_bzero.patch deleted file mode 100644 index ae40a93..0000000 --- a/explicit_bzero.patch +++ /dev/null @@ -1,40 +0,0 @@ -Index: libtirpc-1.0.1/configure.ac -=================================================================== ---- libtirpc-1.0.1.orig/configure.ac -+++ libtirpc-1.0.1/configure.ac -@@ -86,7 +86,7 @@ AC_HEADER_DIRENT - AC_PREFIX_DEFAULT(/usr) - AC_CHECK_HEADERS([arpa/inet.h fcntl.h libintl.h limits.h locale.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h features.h gssapi/gssapi_ext.h]) - AC_CHECK_LIB([pthread], [pthread_create]) --AC_CHECK_FUNCS([getrpcbyname getrpcbynumber setrpcent endrpcent getrpcent]) -+AC_CHECK_FUNCS([getrpcbyname getrpcbynumber setrpcent endrpcent getrpcent explicit_bzero]) - - AC_CONFIG_FILES([Makefile src/Makefile man/Makefile doc/Makefile]) - AC_OUTPUT(libtirpc.pc) -Index: libtirpc-1.0.1/src/des_impl.c -=================================================================== ---- libtirpc-1.0.1.orig/src/des_impl.c -+++ libtirpc-1.0.1/src/des_impl.c -@@ -9,6 +9,10 @@ - #include - #include - -+#if HAVE_CONFIG_H -+#include "config.h" -+#endif -+ - - static const uint32_t des_SPtrans[8][64] = - { -@@ -588,7 +592,11 @@ _des_crypt (char *buf, unsigned len, str - } - tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0; - tbuf[0] = tbuf[1] = 0; -+#ifdef HAVE_EXPLICIT_BZERO -+ explicit_bzero (schedule, sizeof (schedule)); -+#else - __bzero (schedule, sizeof (schedule)); -+#endif - - return (1); - } diff --git a/libtirpc-1.0.1.tar.bz2 b/libtirpc-1.0.1.tar.bz2 deleted file mode 100644 index 3e21f63..0000000 --- a/libtirpc-1.0.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5156974f31be7ccbc8ab1de37c4739af6d9d42c87b1d5caf4835dda75fcbb89e -size 495125 diff --git a/libtirpc-1.0.2.tar.bz2 b/libtirpc-1.0.2.tar.bz2 new file mode 100644 index 0000000..d534cb5 --- /dev/null +++ b/libtirpc-1.0.2.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:723c5ce92706cbb601a8db09110df1b4b69391643158f20ff587e20e7c5f90f5 +size 509601 diff --git a/libtirpc.changes b/libtirpc.changes index 4a47c55..26dbf7a 100644 --- a/libtirpc.changes +++ b/libtirpc.changes @@ -1,3 +1,45 @@ +------------------------------------------------------------------- +Tue Nov 14 12:44:04 CET 2017 - kukuk@suse.de + +- 005-missing-includes.patch: add missing includes to make headers + compatible to sunrpc. + +------------------------------------------------------------------- +Mon Nov 13 15:58:42 CET 2017 - kukuk@suse.de + +- Update to version 1.0.2 + - 002-old-automake.patch: not needed anymore + - 005-libtirpc-1.0.2-rc1.patch: dropped + - 006-Remove-old-meanwhile-wrong-comment-about-FD_SETSIZE-.patch: + removed, merged upstream + - 007-Change-rtime-function-to-use-poll-instead-of-select.patch: + removed, merged upstream + - 008-Add-parameters-to-local-prototypes-to-fix-compiler-w.patch: + removed, merged upstream + - 009-makefd_xprt-checks-that-the-filedesriptor-is-lower-t.patch: + removed, merged upstream + - 010-The-goto-again-statement-was-an-left-over-from-the-p.patch: + removed, merged upstream + - 012-libtirpc-needs-rpcsvc-nis.h-for-compiling-but-does-n.patch: + removed, merged upstream + - 013-If-we-don-t-compile-in-YP-support-don-t-include-YP-h.patch: + removed, merged upstream + - 014-Add-des_crypt.c-and-des_impl.c-to-become-independent.patch: + removed, merged upstream + - 015-Fix-includes-to-compile-without-deprecated-glibc-fun.patch: + removed, merged upstream + - patch6_7.diff: obsolete + - Replace explicit_bzero.patch with + 004-replace-bzero-with-memset.patch from git + - Rename libtirpc-new-path-rpcbindsock.patch to + 001-new-rpcbindsock-path.patch + +------------------------------------------------------------------- +Mon Nov 13 15:57:11 CET 2017 - kukuk@suse.de + +- 003-rpc-types.patch: Add some typedefs to rpc/types.h to allow + applications be compiled with -std=iso9899:1990 + ------------------------------------------------------------------- Sat Sep 30 08:59:27 UTC 2017 - jengelh@inai.de diff --git a/libtirpc.spec b/libtirpc.spec index 38da883..4299698 100644 --- a/libtirpc.spec +++ b/libtirpc.spec @@ -18,7 +18,7 @@ Name: libtirpc # src/crypt_client.c and tirpc/rpcsvc/crypt.x have the BSD advertising clause -Version: 1.0.1 +Version: 1.0.2 Release: 0 Summary: Transport Independent RPC Library License: BSD-4-Clause @@ -35,24 +35,13 @@ Url: http://sourceforge.net/projects/libtirpc/ Source: %{name}-%{version}.tar.bz2 Source1: baselibs.conf Patch0: 000-bindresvport_blacklist.patch -# Patch2 is only needed for SLES11 -Patch2: 002-old-automake.patch -Patch5: 005-libtirpc-1.0.2-rc1.patch -Patch6: 006-Remove-old-meanwhile-wrong-comment-about-FD_SETSIZE-.patch -Patch7: 007-Change-rtime-function-to-use-poll-instead-of-select.patch -Patch8: 008-Add-parameters-to-local-prototypes-to-fix-compiler-w.patch -Patch9: 009-makefd_xprt-checks-that-the-filedesriptor-is-lower-t.patch -Patch10: 010-The-goto-again-statement-was-an-left-over-from-the-p.patch +# only needed on openSUSE >= 13.1, SLE >= 12 +Patch1: 001-new-rpcbindsock-path.patch +Patch3: 003-rpc-types.patch +Patch4: 004-replace-bzero-with-memset.patch +Patch5: 005-missing-includes.patch Patch11: 011-Fix-typo-in-src-libtirpc.map-which-prevents-that-key.patch -Patch12: 012-libtirpc-needs-rpcsvc-nis.h-for-compiling-but-does-n.patch -Patch13: 013-If-we-don-t-compile-in-YP-support-don-t-include-YP-h.patch -Patch14: 014-Add-des_crypt.c-and-des_impl.c-to-become-independent.patch -Patch15: 015-Fix-includes-to-compile-without-deprecated-glibc-fun.patch -Patch25: patch6_7.diff -# Patch37 is only needed on openSUSE >= 13.1, SLE >= 12 -Patch37: libtirpc-new-path-rpcbindsock.patch -Patch38: decls.patch -Patch39: explicit_bzero.patch +Patch12: decls.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %define debug_package_requires libtirpc3 = %{version}-%{release} @@ -98,27 +87,16 @@ TCP over IPv4. %prep %setup -q -n %name-%version %patch0 -p0 -%patch2 -p1 +%if 0%{suse_version} >= 1310 +%patch1 -p1 +%endif +%patch3 -p1 +%patch4 -p1 %patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 %patch11 -p1 %patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch25 -p1 -%if 0%{suse_version} >= 1310 -%patch37 -p1 -%endif -%patch38 -p1 -%patch39 -p1 %build -autoreconf -fiv %configure --disable-static \ --with-pic \ %if 0%{suse_version} < 1200 diff --git a/patch6_7.diff b/patch6_7.diff deleted file mode 100644 index 2028f90..0000000 --- a/patch6_7.diff +++ /dev/null @@ -1,79 +0,0 @@ -Most folks seem to copy this gentoo patch to silence an alleged -_FORTIFY_SOURCE=2 warning: -http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-libs/libtirpc/files/libtirpc-0.2.1-fortify.patch?diff_format=s&revision=1.2&view=markup - -Given that gethostbyname is obsolescent, let's just use getaddrinfo -instead (to silence warnings about the OB function). - -I am undecided if setting AI_V4MAPPED and AI_ADDRCONFIG is a good idea. -Personally i would be inclined to s/if 0/if 1/ but i'll leave that up to -you. - -Signed-off-by: Bernhard Reutner-Fischer ---- - src/getrpcport.c | 37 +++++++++++++++++++++++++------------ - 1 file changed, 25 insertions(+), 12 deletions(-) - -diff --git a/src/getrpcport.c b/src/getrpcport.c -index b452c99..f36158d 100644 ---- a/src/getrpcport.c -+++ b/src/getrpcport.c -@@ -48,19 +48,32 @@ getrpcport(host, prognum, versnum, proto) - int prognum, versnum, proto; - { - struct sockaddr_in addr; -- struct hostent *hp; -+ struct addrinfo hints, *result, *rp; -+ int ret = 0; - - assert(host != NULL); -- -- if ((hp = gethostbyname(host)) == NULL) -+ memset(&hints, 0, sizeof(struct addrinfo)); -+ hints.ai_family = AF_INET; /* ??? :-( */ -+#if 0 -+#ifdef AI_V4MAPPED -+ hints.ai_flags |= AI_V4MAPPED; -+#endif -+#ifdef AI_ADDRCONFIG -+ hints.ai_flags |= AI_ADDRCONFIG; -+#endif -+#endif -+ if (getaddrinfo(host, NULL, &hints, &result) != 0) - return (0); -- memset(&addr, 0, sizeof(addr)); -- addr.sin_family = AF_INET; -- addr.sin_port = 0; -- if (hp->h_length > sizeof(addr)) -- hp->h_length = sizeof(addr); -- memcpy(&addr.sin_addr.s_addr, hp->h_addr, (size_t)hp->h_length); -- /* Inconsistent interfaces need casts! :-( */ -- return (pmap_getport(&addr, (u_long)prognum, (u_long)versnum, -- (u_int)proto)); -+ for (rp = result; rp != NULL; rp = rp->ai_next) { -+ assert (rp->ai_family == AF_INET && rp->ai_addrlen == 16); -+ memcpy(&addr, rp->ai_addr, rp->ai_addrlen); -+ assert (addr.sin_family == AF_INET && addr.sin_port == 0); -+ /* Inconsistent interfaces need casts! :-( */ -+ ret = (pmap_getport(&addr, (u_long)prognum, (u_long)versnum, -+ (u_int)proto)); -+ if (ret) -+ break; -+ } -+ freeaddrinfo(result); -+ return (ret); - } --- -2.1.4 - - ------------------------------------------------------------------------------- -One dashboard for servers and applications across Physical-Virtual-Cloud -Widest out-of-the-box monitoring support with 50+ applications -Performance metrics, stats and reports that give you Actionable Insights -Deep dive visibility with transaction tracing using APM Insight. -http://ad.doubleclick.net/ddm/clk/290420510;117567292;y -_______________________________________________ -Libtirpc-devel mailing list -Libtirpc-devel@lists.sourceforge.net -https://lists.sourceforge.net/lists/listinfo/libtirpc-devel