From 5e7bfa983d92ed6ecc885ae4d9b53e516faa25a5 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Wed, 18 Nov 2015 14:51:39 -0500 Subject: [PATCH] Delete the unix socket only if we have created it (bz 1279076) Signed-off-by: Steve Dickson --- rpcbind-0.2.3-rpcbind-socket.patch | 46 ++++++++++++++++++++++++++++++ rpcbind.spec | 7 ++++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 rpcbind-0.2.3-rpcbind-socket.patch diff --git a/rpcbind-0.2.3-rpcbind-socket.patch b/rpcbind-0.2.3-rpcbind-socket.patch new file mode 100644 index 0000000..cf24980 --- /dev/null +++ b/rpcbind-0.2.3-rpcbind-socket.patch @@ -0,0 +1,46 @@ +commit 3a664b1b5a310df39bd0f325b0edb1deb31c2249 +Author: Laurent Bigonville +Date: Wed Nov 18 14:34:26 2015 -0500 + + Delete the unix socket only if we have created it + + From: Laurent Bigonville + + If systemd has created the unix socket on our behalf, we shouldn't try + to delete it. + + https://bugzilla.redhat.com/show_bug.cgi?id=1279076 + + Signed-off-by: Laurent Bigonville + +diff --git a/src/rpcbind.c b/src/rpcbind.c +index 045daa1..c4265cd 100644 +--- a/src/rpcbind.c ++++ b/src/rpcbind.c +@@ -87,6 +87,7 @@ static inline void __nss_configure_lookup(const char *db, const char *s) {} + int debugging = 0; /* Tell me what's going on */ + int doabort = 0; /* When debugging, do an abort on errors */ + int dofork = 1; /* fork? */ ++int createdsocket = 0; /* Did I create the socket or systemd did it for me? */ + + rpcblist_ptr list_rbl; /* A list of version 3/4 rpcbind services */ + +@@ -445,6 +446,7 @@ init_transport(struct netconfig *nconf) + memset(&sun, 0, sizeof sun); + sun.sun_family = AF_LOCAL; + unlink(_PATH_RPCBINDSOCK); ++ createdsocket = 1; /* We are now in the process of creating the unix socket */ + strcpy(sun.sun_path, _PATH_RPCBINDSOCK); + addrlen = SUN_LEN(&sun); + sa = (struct sockaddr *)&sun; +@@ -846,7 +848,8 @@ static void + terminate(int dummy /*__unused*/) + { + close(rpcbindlockfd); +- unlink(_PATH_RPCBINDSOCK); ++ if(createdsocket) ++ unlink(_PATH_RPCBINDSOCK); + unlink(RPCBINDDLOCK); + #ifdef WARMSTART + write_warmstart(); /* Dump yourself */ diff --git a/rpcbind.spec b/rpcbind.spec index d17d2ac..24d0d7c 100644 --- a/rpcbind.spec +++ b/rpcbind.spec @@ -1,6 +1,6 @@ Name: rpcbind Version: 0.2.3 -Release: 0.6%{?dist} +Release: 7%{?dist} Summary: Universal Addresses to RPC Program Number Mapper Group: System Environment/Daemons License: BSD @@ -23,6 +23,7 @@ Requires(postun): systemd coreutils Patch001: rpcbind-0.2.3-pmap_callit.diff Patch002: rpcbind-0.2.3-xp_auth.patch +Patch003: rpcbind-0.2.3-rpcbind-socket.patch Provides: portmap = %{version}-%{release} Obsoletes: portmap <= 4.0-65.3 @@ -37,6 +38,7 @@ RPC calls on a server on that machine. %patch001 -p1 %patch002 -p1 +%patch003 -p1 %build %ifarch s390 s390x @@ -128,6 +130,9 @@ fi %{_unitdir}/rpcbind.socket %changelog +* Wed Nov 18 2015 Steve Dickson - 0.2.3-7 +- Delete the unix socket only if we have created it (bz 1279076) + * Tue Nov 3 2015 Steve Dickson - 0.2.3-0.6 - handle_reply: Don't use the xp_auth pointer directly