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/COPYING.GPLv2 b/COPYING.GPLv2 new file mode 100644 index 0000000..88de850 --- /dev/null +++ b/COPYING.GPLv2 @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. 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..0e0bc8b 100644 --- a/libtirpc.changes +++ b/libtirpc.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Mon Nov 27 14:30:05 CET 2017 - kukuk@suse.de + +- Add COPYING.GPLv2 and install Licenses for GPLv2 code. + +------------------------------------------------------------------- +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..ac97d85 100644 --- a/libtirpc.spec +++ b/libtirpc.spec @@ -18,10 +18,10 @@ 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 +License: BSD-3-Clause AND GPL-2.0+ Group: Development/Libraries/C and C++ %if 0%{suse_version} >= 1300 BuildRequires: krb5-mini-devel @@ -34,25 +34,15 @@ BuildRequires: pkg-config Url: http://sourceforge.net/projects/libtirpc/ Source: %{name}-%{version}.tar.bz2 Source1: baselibs.conf +Source2: COPYING.GPLv2 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,33 +88,24 @@ 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 --disable-gssapi \ %endif --libdir=/%{_lib} +# Copy GPLv2 COPYING +cp %{SOURCE2} . make %{?_smp_mflags} %install @@ -145,6 +126,7 @@ mv -v %{buildroot}/%{_lib}/pkgconfig %{buildroot}/%{_libdir} %files -n libtirpc3 %defattr(-,root,root) +%doc COPYING COPYING.GPLv2 /%{_lib}/libtirpc.so.3* %files netconfig 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