nfs-utils: update to 2.4.2

Closes: #17413
This commit is contained in:
Jürgen Buchmüller 2020-01-17 20:10:00 +01:00
parent d00376c592
commit 87c1af7cd2
8 changed files with 101 additions and 868 deletions

View file

@ -1,27 +0,0 @@
svc_socket: fix use of undefined macro HAVE_GETRPCBYNUMBER_R
The macro HAVE_GETRPCBYNUMBER_R is set based on whether the
`getrpcbynumber_r` function was found by autoconf or not. While another
location correctly checks whether it is set by using `#ifdef`,
`getservport()` instead wrongly uses `#if HAVE_GETRPCBYNUMBER_R`. This
may cause a compilation error with gcc with "-Werror=undef" if the macro
has not been defined.
Fix the error by using `#ifdef` instead.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Steve Dickson <steved@redhat.com>
diff --git a/support/nfs/svc_socket.c b/support/nfs/svc_socket.c
index 1239712..d56507a 100644 (file)
--- a/support/nfs/svc_socket.c
+++ b/support/nfs/svc_socket.c
@@ -46,7 +46,7 @@ int getservport(u_long number, const char *proto)
struct rpcent *rpcp;
struct servent servbuf, *servp = NULL;
int ret = 0;
-#if HAVE_GETRPCBYNUMBER_R
+#ifdef HAVE_GETRPCBYNUMBER_R
char rpcdata[1024];
struct rpcent rpcbuf;

View file

@ -0,0 +1,97 @@
--- a/utils/nfsdcld/nfsdcld.c 2019-11-13 18:09:41.000000000 +0100
+++ b/utils/nfsdcld/nfsdcld.c 2020-01-17 20:01:32.335230045 +0100
@@ -379,7 +379,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize)
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
/* reopen pipe, just to be sure */
ret = cld_pipe_open(clnt);
@@ -410,7 +410,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
@@ -460,7 +460,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
@@ -499,7 +499,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
@@ -549,7 +549,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
@@ -608,7 +608,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
@@ -668,7 +668,7 @@
wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
if (wsize != bsize) {
xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
- __func__, wsize);
+ __func__, (long int)wsize);
ret = cld_pipe_open(clnt);
if (ret) {
xlog(L_FATAL, "%s: unable to reopen pipe: %d",
--- a/utils/nfsdcld/sqlite.c 2019-11-13 18:09:41.000000000 +0100
+++ b/utils/nfsdcld/sqlite.c 2020-01-17 20:08:36.425251924 +0100
@@ -512,7 +512,7 @@
current_epoch = tcur;
recovery_epoch = trec;
ret = 0;
- xlog(D_GENERAL, "%s: current_epoch=%lu recovery_epoch=%lu",
- __func__, current_epoch, recovery_epoch);
+ xlog(D_GENERAL, "%s: current_epoch=%llu recovery_epoch=%llu",
+ __func__, (long long unsigned int)current_epoch, (long long unsigned int)recovery_epoch);
out:
sqlite3_finalize(stmt);
@@ -1223,7 +1223,7 @@
current_epoch = tcur;
recovery_epoch = trec;
- xlog(D_GENERAL, "%s: current_epoch=%lu recovery_epoch=%lu",
- __func__, current_epoch, recovery_epoch);
+ xlog(D_GENERAL, "%s: current_epoch=%llu recovery_epoch=%llu",
+ __func__, (long long unsigned int)current_epoch, (long long unsigned int)recovery_epoch);
out:
@@ -1282,7 +1282,7 @@
}
recovery_epoch = 0;
- xlog(D_GENERAL, "%s: current_epoch=%lu recovery_epoch=%lu",
- __func__, current_epoch, recovery_epoch);
+ xlog(D_GENERAL, "%s: current_epoch=%llu recovery_epoch=%llu",
+ __func__, (long long unsigned int)current_epoch, (long long unsigned int)recovery_epoch);
out:

View file

@ -1,105 +0,0 @@
From patchwork Wed Jun 21 21:23:38 2017
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [V2] idmapd: Use inotify instead of dnotify
From: Alan Swanson <reiver@improbability.net>
X-Patchwork-Id: 9802949
Message-Id: <20170621212338.32460-1-reiver@improbability.net>
To: linux-nfs@vger.kernel.org
Cc: Alan Swanson <reiver@improbability.net>
Date: Wed, 21 Jun 2017 22:23:38 +0100
Remove last use of dnotify in nfs-utils by bringing idmapd upto
date with (required) inotify use by gssd and blkmapd.
---
utils/idmapd/idmapd.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
Got annoyed by the dnotify kernel requirement. Read the last
discussion "DNOTIFY to INOTIFY migration" posted in 2014 and while
still not officially depreciated, dnotify was officially "replaced"
by inotify in Linux 2.6.13 in 2005. Would be nice to sync this
requirement across the codebase.
V2: Init wd to -1 not 0
diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
index c12e878..c29dba6 100644
--- a/utils/idmapd/idmapd.c
+++ b/utils/idmapd/idmapd.c
@@ -36,7 +36,7 @@
#include <sys/types.h>
#include <sys/time.h>
-#include <sys/poll.h>
+#include <sys/inotify.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <time.h>
@@ -205,15 +205,16 @@ void usage(char *progname)
int
main(int argc, char **argv)
{
- int fd = 0, opt, fg = 0, nfsdret = -1;
+ int wd = -1, opt, fg = 0, nfsdret = -1;
struct idmap_clientq icq;
- struct event rootdirev, clntdirev, svrdirev;
+ struct event rootdirev, clntdirev, svrdirev, inotifyev;
struct event initialize;
struct passwd *pw;
struct group *gr;
struct stat sb;
char *xpipefsdir = NULL;
int serverstart = 1, clientstart = 1;
+ int inotify_fd;
int ret;
char *progname;
char *conf_path = NULL;
@@ -373,18 +374,15 @@ main(int argc, char **argv)
}
}
- if ((fd = open(pipefsdir, O_RDONLY)) == -1)
- xlog_err("main: open(%s): %s", pipefsdir, strerror(errno));
-
- if (fcntl(fd, F_SETSIG, SIGUSR1) == -1)
- xlog_err("main: fcntl(%s): %s", pipefsdir, strerror(errno));
-
- if (fcntl(fd, F_NOTIFY,
- DN_CREATE | DN_DELETE | DN_MODIFY | DN_MULTISHOT) == -1) {
- xlog_err("main: fcntl(%s): %s", pipefsdir, strerror(errno));
- if (errno == EINVAL)
- xlog_err("main: Possibly no Dnotify support in kernel.");
+ inotify_fd = inotify_init1(IN_NONBLOCK);
+ if (inotify_fd == -1) {
+ xlog_err("Unable to initialise inotify_init1: %s\n", strerror(errno));
+ } else {
+ wd = inotify_add_watch(inotify_fd, pipefsdir, IN_CREATE | IN_DELETE | IN_MODIFY);
+ if (wd < 0)
+ xlog_err("Unable to inotify_add_watch(%s): %s\n", pipefsdir, strerror(errno));
}
+
TAILQ_INIT(&icq);
/* These events are persistent */
@@ -394,6 +392,10 @@ main(int argc, char **argv)
signal_add(&clntdirev, NULL);
signal_set(&svrdirev, SIGHUP, svrreopen, NULL);
signal_add(&svrdirev, NULL);
+ if ( wd >= 0) {
+ event_set(&inotifyev, inotify_fd, EV_READ | EV_PERSIST, dirscancb, &icq);
+ event_add(&inotifyev, NULL);
+ }
/* Fetch current state */
/* (Delay till start of event_dispatch to avoid possibly losing
@@ -402,7 +404,7 @@ main(int argc, char **argv)
evtimer_add(&initialize, &now);
}
- if (nfsdret != 0 && fd == 0)
+ if (nfsdret != 0 && wd < 0)
xlog_err("main: Neither NFS client nor NFSd found");
daemon_ready();

View file

@ -1,100 +0,0 @@
--- nfs-utils-2.3.1.orig/support/export/export.c
+++ nfs-utils-2.3.1/support/export/export.c
@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
+#include <limits.h>
#include "xmalloc.h"
#include "nfslib.h"
#include "exportfs.h"
--- nfs-utils-2.3.1.orig/support/export/xtab.c
+++ nfs-utils-2.3.1/support/export/xtab.c
@@ -18,6 +18,7 @@
#include <sys/stat.h>
#include <errno.h>
#include <libgen.h>
+#include <limits.h>
#include "nfslib.h"
#include "exportfs.h"
--- nfs-utils-2.3.1.orig/support/misc/file.c
+++ nfs-utils-2.3.1/support/misc/file.c
@@ -27,6 +27,7 @@
#include <dirent.h>
#include <stdlib.h>
#include <stdbool.h>
+#include <limits.h>
#include "xlog.h"
#include "misc.h"
--- nfs-utils-2.3.1.orig/support/nfs/xcommon.c
+++ nfs-utils-2.3.1/support/nfs/xcommon.c
@@ -16,6 +16,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <limits.h>
#include "xcommon.h"
#include "nls.h" /* _() */
--- nfs-utils-2.3.1.orig/support/nsm/file.c
+++ nfs-utils-2.3.1/support/nsm/file.c
@@ -85,6 +85,7 @@
#include <fcntl.h>
#include <dirent.h>
#include <grp.h>
+#include <limits.h>
#include "xlog.h"
#include "nsm.h"
--- nfs-utils-2.3.1.orig/utils/blkmapd/device-discovery.c
+++ nfs-utils-2.3.1/utils/blkmapd/device-discovery.c
@@ -49,6 +49,7 @@
#include <unistd.h>
#include <libgen.h>
#include <errno.h>
+#include <limits.h>
#include <libdevmapper.h>
#ifdef HAVE_CONFIG_H
--- nfs-utils-2.3.1.orig/utils/gssd/krb5_util.c
+++ nfs-utils-2.3.1/utils/gssd/krb5_util.c
@@ -120,6 +120,7 @@
#endif
#include <krb5.h>
#include <rpc/auth_gss.h>
+#include <limits.h>
#include "gssd.h"
#include "err_util.h"
--- nfs-utils-2.3.1.orig/utils/mountd/cache.c
+++ nfs-utils-2.3.1/utils/mountd/cache.c
@@ -26,6 +26,7 @@
#include <pwd.h>
#include <grp.h>
#include <mntent.h>
+#include <limits.h>
#include "misc.h"
#include "nfslib.h"
#include "exportfs.h"
--- nfs-utils-2.3.1.orig/utils/mountd/mountd.c
+++ nfs-utils-2.3.1/utils/mountd/mountd.c
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <sys/resource.h>
#include <sys/wait.h>
+#include <limits.h>
#include "conffile.h"
#include "xmalloc.h"
--- nfs-utils-2.3.1.orig/utils/mountd/rmtab.c
+++ nfs-utils-2.3.1/utils/mountd/rmtab.c
@@ -16,6 +16,7 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
+#include <limits.h>
#include "misc.h"
#include "exportfs.h"

View file

@ -1,576 +0,0 @@
From ed06fade6dc46df0a38caab2e465dfaabfc76f46 Mon Sep 17 00:00:00 2001
From: Peter Wagner <tripolar@gmx.at>
Date: Wed, 20 Feb 2019 10:59:50 -0500
Subject: [PATCH] nfs-utils: fix addrinfo usage with musl-1.1.21
Afer the update to musl 1.1.21 freeaddrinfo is broken in some places in
the nfs-utils code because glibc seems to ignore when freeaddrinfo is
called with a NULL pointer which seems to be not defined in the spec.
See: https://www.openwall.com/lists/musl/2019/02/03/4
The free in support/export/hostname.c is removed too
See: https://www.openwall.com/lists/musl/2019/02/17/2
Define and use wrapper function nfs_freeaddrinfo to handle
freeaddrinfo versions that don't tolerate NULL pointers
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Peter Wagner <tripolar@gmx.at>
Signed-off-by: Steve Dickson <steved@redhat.com>
---
support/export/client.c | 6 +++---
support/export/hostname.c | 4 ++--
support/include/nfslib.h | 11 +++++++++++
support/nfs/getport.c | 7 ++++---
support/nfs/svc_create.c | 6 +++---
support/nfsidmap/umich_ldap.c | 3 ++-
tests/nsm_client/nsm_client.c | 2 +-
utils/exportfs/exportfs.c | 10 +++++-----
utils/gssd/gssd.c | 4 ++--
utils/gssd/krb5_util.c | 3 ++-
utils/mount/network.c | 6 +++---
utils/mount/stropts.c | 3 ++-
utils/mountd/auth.c | 2 +-
utils/mountd/cache.c | 10 +++++-----
utils/mountd/mountd.c | 4 ++--
utils/mountd/rmtab.c | 2 +-
utils/nfsd/nfssvc.c | 3 +--
utils/statd/hostname.c | 11 ++++++-----
utils/statd/sm-notify.c | 14 +++++++-------
19 files changed, 63 insertions(+), 48 deletions(-)
diff --git a/support/export/client.c b/support/export/client.c
index baf59c8..a1fba01 100644
--- a/support/export/client.c
+++ b/support/export/client.c
@@ -210,7 +210,7 @@ init_subnetwork(nfs_client *clp)
set_addrlist(clp, 0, ai->ai_addr);
family = ai->ai_addr->sa_family;
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
switch (family) {
case AF_INET:
@@ -309,7 +309,7 @@ client_lookup(char *hname, int canonical)
init_addrlist(clp, ai);
out:
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return clp;
}
@@ -674,7 +674,7 @@ check_netgroup(const nfs_client *clp, const struct addrinfo *ai)
tmp = host_pton(hname);
if (tmp != NULL) {
char *cname = host_canonname(tmp->ai_addr);
- freeaddrinfo(tmp);
+ nfs_freeaddrinfo(tmp);
/* The resulting FQDN may be in our netgroup. */
if (cname != NULL) {
diff --git a/support/export/hostname.c b/support/export/hostname.c
index 96c5449..be4d7f6 100644
--- a/support/export/hostname.c
+++ b/support/export/hostname.c
@@ -130,7 +130,7 @@ host_pton(const char *paddr)
if (!inet4 && ai->ai_addr->sa_family == AF_INET) {
xlog(D_GENERAL, "%s: failed to convert %s",
__func__, paddr);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
break;
}
return ai;
@@ -290,7 +290,7 @@ host_reliable_addrinfo(const struct sockaddr *sap)
if (nfs_compare_sockaddr(a->ai_addr, sap))
break;
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (!a)
goto out_free_hostname;
diff --git a/support/include/nfslib.h b/support/include/nfslib.h
index ab8b2bf..b09fce4 100644
--- a/support/include/nfslib.h
+++ b/support/include/nfslib.h
@@ -16,6 +16,7 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#include <netdb.h>
#include <stdio.h>
#include <stdbool.h>
#include <paths.h>
@@ -156,4 +157,14 @@ void libtirpc_set_debug(char *name, int level, int use_stderr);
#define UNUSED(x) UNUSED_ ## x __attribute__((unused))
+/*
+ * Some versions of freeaddrinfo(3) do not tolerate being
+ * passed a NULL pointer.
+ */
+static inline void nfs_freeaddrinfo(struct addrinfo *ai)
+{
+ if (ai) {
+ freeaddrinfo(ai);
+ }
+}
#endif /* NFSLIB_H */
diff --git a/support/nfs/getport.c b/support/nfs/getport.c
index 081594c..e458d8f 100644
--- a/support/nfs/getport.c
+++ b/support/nfs/getport.c
@@ -47,6 +47,7 @@
#include "sockaddr.h"
#include "nfsrpc.h"
+#include "nfslib.h"
/*
* Try a local socket first to access the local rpcbind daemon
@@ -109,7 +110,7 @@ static int nfs_gp_loopback_address(struct sockaddr *sap, socklen_t *salen)
ret = 1;
}
- freeaddrinfo(gai_results);
+ nfs_freeaddrinfo(gai_results);
return ret;
}
@@ -134,8 +135,8 @@ static in_port_t nfs_gp_getservbyname(const char *service,
sin = (const struct sockaddr_in *)gai_results->ai_addr;
port = sin->sin_port;
-
- freeaddrinfo(gai_results);
+
+ nfs_freeaddrinfo(gai_results);
return port;
}
diff --git a/support/nfs/svc_create.c b/support/nfs/svc_create.c
index ef7ff05..4e14430 100644
--- a/support/nfs/svc_create.c
+++ b/support/nfs/svc_create.c
@@ -273,7 +273,7 @@ svc_create_nconf_rand_port(const char *name, const rpcprog_t program,
bindaddr.qlen = SOMAXCONN;
xprt = svc_tli_create(RPC_ANYFD, nconf, &bindaddr, 0, 0);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (xprt == NULL) {
xlog(L_ERROR, "Failed to create listener xprt "
"(%s, %u, %s)", name, version, nconf->nc_netid);
@@ -364,11 +364,11 @@ svc_create_nconf_fixed_port(const char *name, const rpcprog_t program,
svc_create_cache_xprt(xprt);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return 1;
out_free:
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return 0;
}
diff --git a/support/nfsidmap/umich_ldap.c b/support/nfsidmap/umich_ldap.c
index b661110..10d1d97 100644
--- a/support/nfsidmap/umich_ldap.c
+++ b/support/nfsidmap/umich_ldap.c
@@ -46,6 +46,7 @@
/* We are using deprecated functions, get the prototypes... */
#define LDAP_DEPRECATED 1
#include <ldap.h>
+#include "nfslib.h"
#include "nfsidmap.h"
#include "nfsidmap_plugin.h"
#include "nfsidmap_private.h"
@@ -1089,7 +1090,7 @@ get_canonical_hostname(const char *inname)
return_name = strdup (tmphost);
out_free:
- freeaddrinfo(ap);
+ nfs_freeaddrinfo(ap);
out_err:
return return_name;
}
diff --git a/tests/nsm_client/nsm_client.c b/tests/nsm_client/nsm_client.c
index 0fa3422..8dc0591 100644
--- a/tests/nsm_client/nsm_client.c
+++ b/tests/nsm_client/nsm_client.c
@@ -243,7 +243,7 @@ nsm_client_get_rpcclient(const char *node)
printf("RPC client creation failed\n");
}
out:
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return client;
}
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index cd3c979..333eadc 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -282,7 +282,7 @@ exportfs_parsed(char *hname, char *path, char *options, int verbose)
validate_export(exp);
out:
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
static int exportfs_generic(char *arg, char *options, int verbose)
@@ -395,7 +395,7 @@ unexportfs_parsed(char *hname, char *path, int verbose)
if (!success)
xlog(L_ERROR, "Could not find '%s:%s' to unexport.", hname, path);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
static int unexportfs_generic(char *arg, int verbose)
@@ -588,7 +588,7 @@ address_list(const char *hostname)
if (ai != NULL) {
/* @hostname was a presentation address */
cname = host_canonname(ai->ai_addr);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (cname != NULL)
goto out;
}
@@ -639,8 +639,8 @@ matchhostname(const char *hostname1, const char *hostname2)
}
out:
- freeaddrinfo(results1);
- freeaddrinfo(results2);
+ nfs_freeaddrinfo(results1);
+ nfs_freeaddrinfo(results2);
return result;
}
diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c
index 2e92f28..7eeb05f 100644
--- a/utils/gssd/gssd.c
+++ b/utils/gssd/gssd.c
@@ -172,14 +172,14 @@ gssd_addrstr_to_sockaddr(struct sockaddr *sa, const char *node, const char *port
if (sin6->sin6_scope_id) {
printerr(0, "ERROR: address %s has non-zero "
"sin6_scope_id!\n", node);
- freeaddrinfo(res);
+ nfs_freeaddrinfo(res);
return false;
}
}
#endif /* IPV6_SUPPORTED */
memcpy(sa, res->ai_addr, res->ai_addrlen);
- freeaddrinfo(res);
+ nfs_freeaddrinfo(res);
return true;
}
diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c
index eba1aac..6daba44 100644
--- a/utils/gssd/krb5_util.c
+++ b/utils/gssd/krb5_util.c
@@ -121,6 +121,7 @@
#include <krb5.h>
#include <rpc/auth_gss.h>
+#include "nfslib.h"
#include "gssd.h"
#include "err_util.h"
#include "gss_util.h"
@@ -587,7 +588,7 @@ get_full_hostname(const char *inhost, char *outhost, int outhostlen)
goto out;
}
strncpy(outhost, addrs->ai_canonname, outhostlen);
- freeaddrinfo(addrs);
+ nfs_freeaddrinfo(addrs);
for (c = outhost; *c != '\0'; c++)
*c = tolower(*c);
diff --git a/utils/mount/network.c b/utils/mount/network.c
index 356f663..fc21110 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -250,7 +250,7 @@ int nfs_lookup(const char *hostname, const sa_family_t family,
break;
}
- freeaddrinfo(gai_results);
+ nfs_freeaddrinfo(gai_results);
return ret;
}
@@ -307,7 +307,7 @@ int nfs_string_to_sockaddr(const char *address, struct sockaddr *sap,
}
break;
}
- freeaddrinfo(gai_results);
+ nfs_freeaddrinfo(gai_results);
}
return ret;
@@ -1180,7 +1180,7 @@ static int nfs_ca_gai(const struct sockaddr *sap,
*buflen = gai_results->ai_addrlen;
memcpy(buf, gai_results->ai_addr, *buflen);
- freeaddrinfo(gai_results);
+ nfs_freeaddrinfo(gai_results);
return 1;
}
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 0a25b1f..a093926 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -35,6 +35,7 @@
#include <netinet/in.h>
#include <arpa/inet.h>
+#include "nfslib.h"
#include "sockaddr.h"
#include "xcommon.h"
#include "mount.h"
@@ -1268,7 +1269,7 @@ int nfsmount_string(const char *spec, const char *node, char *type,
} else
nfs_error(_("%s: internal option parsing error"), progname);
- freeaddrinfo(mi.address);
+ nfs_freeaddrinfo(mi.address);
free(mi.hostname);
return retval;
}
diff --git a/utils/mountd/auth.c b/utils/mountd/auth.c
index cb4848c..67627f7 100644
--- a/utils/mountd/auth.c
+++ b/utils/mountd/auth.c
@@ -297,7 +297,7 @@ auth_authenticate(const char *what, const struct sockaddr *caller,
what, buf, nfs_get_port(caller), path, epath, error);
}
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return exp;
}
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 7e8d403..2cb370f 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -113,7 +113,7 @@ static void auth_unix_ip(int f)
ai = client_resolve(tmp->ai_addr);
if (ai) {
client = client_compose(ai);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
}
bp = buf; blen = sizeof(buf);
@@ -133,7 +133,7 @@ static void auth_unix_ip(int f)
xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, client?client: "DEFAULT");
free(client);
- freeaddrinfo(tmp);
+ nfs_freeaddrinfo(tmp);
}
@@ -667,7 +667,7 @@ static struct addrinfo *lookup_client_addr(char *dom)
if (tmp == NULL)
return NULL;
ret = client_resolve(tmp->ai_addr);
- freeaddrinfo(tmp);
+ nfs_freeaddrinfo(tmp);
return ret;
}
@@ -834,7 +834,7 @@ static void nfsd_fh(int f)
out:
if (found_path)
free(found_path);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
free(dom);
xlog(D_CALL, "nfsd_fh: found %p path %s", found, found ? found->e_path : NULL);
}
@@ -1355,7 +1355,7 @@ static void nfsd_export(int f)
xlog(D_CALL, "nfsd_export: found %p path %s", found, path ? path : NULL);
if (dom) free(dom);
if (path) free(path);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index 086c39b..fb7bba4 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -578,10 +578,10 @@ static void prune_clients(nfs_export *exp, struct exportnode *e)
*cp = c->gr_next;
xfree(c->gr_name);
xfree(c);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
continue;
}
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
cp = &(c->gr_next);
}
diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c
index 3ae0dbb..c896243 100644
--- a/utils/mountd/rmtab.c
+++ b/utils/mountd/rmtab.c
@@ -226,7 +226,7 @@ mountlist_list(void)
ai = host_pton(rep->r_client);
if (ai != NULL) {
m->ml_hostname = host_canonname(ai->ai_addr);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
}
}
if (m->ml_hostname == NULL)
diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
index 1e6ffd6..720bdd9 100644
--- a/utils/nfsd/nfssvc.c
+++ b/utils/nfsd/nfssvc.c
@@ -246,8 +246,7 @@ error:
close(fd);
if (sockfd >= 0)
close(sockfd);
- if (addrhead)
- freeaddrinfo(addrhead);
+ nfs_freeaddrinfo(addrhead);
return (bounded ? 0 : rc);
}
diff --git a/utils/statd/hostname.c b/utils/statd/hostname.c
index 8cccdb8..16e21fc 100644
--- a/utils/statd/hostname.c
+++ b/utils/statd/hostname.c
@@ -35,6 +35,7 @@
#include <netdb.h>
#include <arpa/inet.h>
+#include "nfslib.h"
#include "sockaddr.h"
#include "statd.h"
#include "xlog.h"
@@ -203,7 +204,7 @@ statd_canonical_name(const char *hostname)
_Bool result;
result = get_nameinfo(ai->ai_addr, ai->ai_addrlen,
buf, (socklen_t)sizeof(buf));
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (!result || buf[0] == '\0')
/* OK to use presentation address,
* if no reverse map exists */
@@ -217,7 +218,7 @@ statd_canonical_name(const char *hostname)
if (ai == NULL)
return NULL;
strcpy(buf, ai->ai_canonname);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return strdup(buf);
}
@@ -253,7 +254,7 @@ statd_canonical_list(const char *hostname)
_Bool result;
result = get_nameinfo(ai->ai_addr, ai->ai_addrlen,
buf, (socklen_t)sizeof(buf));
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (result)
goto out;
}
@@ -308,8 +309,8 @@ statd_matchhostname(const char *hostname1, const char *hostname2)
}
out:
- freeaddrinfo(results2);
- freeaddrinfo(results1);
+ nfs_freeaddrinfo(results2);
+ nfs_freeaddrinfo(results1);
xlog(D_CALL, "%s: hostnames %s and %s %s", __func__,
hostname1, hostname2,
diff --git a/utils/statd/sm-notify.c b/utils/statd/sm-notify.c
index 29dad38..5e394a3 100644
--- a/utils/statd/sm-notify.c
+++ b/utils/statd/sm-notify.c
@@ -36,6 +36,7 @@
#include "sockaddr.h"
#include "xlog.h"
#include "nsm.h"
+#include "nfslib.h"
#include "nfsrpc.h"
/* glibc before 2.3.4 */
@@ -179,7 +180,7 @@ smn_verify_my_name(const char *name)
case 0:
/* @name was a presentation address */
retval = smn_get_hostname(ai->ai_addr, ai->ai_addrlen, name);
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
if (retval == NULL)
return NULL;
break;
@@ -253,8 +254,7 @@ static void smn_forget_host(struct nsm_host *host)
free((void *)host->my_name);
free((void *)host->mon_name);
free(host->name);
- if (host->ai)
- freeaddrinfo(host->ai);
+ nfs_freeaddrinfo(host->ai);
free(host);
}
@@ -430,7 +430,7 @@ retry:
if (srcport) {
if (bind(sock, ai->ai_addr, ai->ai_addrlen) == -1) {
xlog(L_ERROR, "Failed to bind RPC socket: %m");
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
(void)close(sock);
return -1;
}
@@ -440,7 +440,7 @@ retry:
if (smn_bindresvport(sock, ai->ai_addr) == -1) {
xlog(L_ERROR,
"bindresvport on RPC socket failed: %m");
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
(void)close(sock);
return -1;
}
@@ -449,13 +449,13 @@ retry:
se = getservbyport((int)nfs_get_port(ai->ai_addr), "udp");
if (se != NULL && retry_cnt < 100) {
retry_cnt++;
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
(void)close(sock);
goto retry;
}
}
- freeaddrinfo(ai);
+ nfs_freeaddrinfo(ai);
return sock;
}
--
1.8.3.1

View file

@ -1,31 +0,0 @@
--- a/configure.ac
+++ b/configure.ac
@@ -547,11 +547,11 @@
-pipe \
-Wall \
-Wextra \
- -Werror=strict-prototypes \
- -Werror=missing-prototypes \
- -Werror=missing-declarations \
+ -Wstrict-prototypes \
+ -Wmissing-prototypes \
+ -Wmissing-declarations \
-Werror=format=2 \
- -Werror=undef \
+ -Wundef \
-Werror=missing-include-dirs \
-Werror=strict-aliasing=2 \
-Werror=init-self \
@@ -579,10 +579,10 @@
CHECK_CCSUPPORT([-Werror=format-overflow=2], [flg1])
CHECK_CCSUPPORT([-Werror=int-conversion], [flg2])
-CHECK_CCSUPPORT([-Werror=incompatible-pointer-types], [flg3])
+#CHECK_CCSUPPORT([-Werror=incompatible-pointer-types], [flg3])
CHECK_CCSUPPORT([-Werror=misleading-indentation], [flg4])
-AC_SUBST([AM_CFLAGS], ["$my_am_cflags $flg1 $flg2 $flg3 $flg4"])
+AC_SUBST([AM_CFLAGS], ["$my_am_cflags $flg1 $flg2 $flg4"])
# Make sure that $ACLOCAL_FLAGS are used during a rebuild
AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \$(ACLOCAL_FLAGS)"])

View file

@ -1,25 +0,0 @@
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -39,11 +39,11 @@
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/stat.h>
-#if defined(__GLIBC__) && (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)
+#if defined(__GLIBC__) && (__GLIBC__ < 2) || (defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 24)
/* Cannot safely include linux/in6.h in old glibc, so hardcode the needed values */
# define IPV6_PREFER_SRC_PUBLIC 2
# define IPV6_ADDR_PREFERENCES 72
-#else
+#elif defined(__GLIBC__)
# include <linux/in6.h>
#endif
#include <netinet/in.h>
@@ -1062,7 +1062,7 @@ int clnt_ping(struct sockaddr_in *saddr, const unsigned long prog,
if (caddr) {
/* Get the address of our end of this connection */
socklen_t len = sizeof(*caddr);
- if (getsockname(sock, caddr, &len) != 0)
+ if (getsockname(sock, (struct sockaddr *)caddr, &len) != 0)
caddr->sin_family = 0;
}

View file

@ -1,7 +1,7 @@
# Template file for 'nfs-utils'
pkgname=nfs-utils
version=2.3.3
revision=4
version=2.4.2
revision=1
build_style=gnu-configure
configure_args="--with-statduser=nobody --enable-gss --enable-nfsv4
--with-statedir=/var/lib/nfs --enable-libmount-mount --enable-svcgss
@ -11,9 +11,9 @@ configure_args="--with-statduser=nobody --enable-gss --enable-nfsv4
short_desc="Network File System utilities"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="http://nfs.sourceforge.net"
homepage="https://www.linux-nfs.org/"
distfiles="${KERNEL_SITE}/utils/${pkgname}/${version}/${pkgname}-${version}.tar.xz"
checksum=f68b34793831b05f1fd5760d6bdec92772c7684177586a99a61e7b444f336322
checksum=4464737a03d5f73ded2ffefe19d5543ed7b1d6c541985d8acaafdc8025aa1038
patch_args="-Np1"
replaces="rpcgen>=0"