Try harder to re-exec nscd in paranoia mode.
authorUlrich Drepper <drepper@redhat.com>
Mon, 23 Nov 2009 03:07:52 +0000 (19:07 -0800)
committerUlrich Drepper <drepper@redhat.com>
Mon, 23 Nov 2009 03:07:52 +0000 (19:07 -0800)
ChangeLog
nscd/connections.c

index 9a73351..337af67 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2009-11-22  Ulrich Drepper  <drepper@redhat.com>
 
+       * nscd/connections.c (restart): Try harder to re-exec.
+
        * sunrpc/create_xid.c (_create_xid): Reinitialize state after fork.
 
        * sysdeps/unix/sysv/linux/ntp_gettimex.c:  New file.
index ca73393..69f6533 100644 (file)
@@ -1426,15 +1426,14 @@ cannot change to old working directory: %s; disabling paranoia mode"),
 #endif
   /* Try to exec the real nscd program so the process name (as reported
      in /proc/PID/status) will be 'nscd', but fall back to /proc/self/exe
-     if readlink fails */
+     if readlink or the exec with the result of the readlink call fails.  */
   ssize_t n = readlink ("/proc/self/exe", pathbuf, sizeof (pathbuf) - 1);
-  if (n == -1)
-    execv ("/proc/self/exe", argv);
-  else
+  if (n != -1)
     {
       pathbuf[n] = '\0';
       execv (pathbuf, argv);
     }
+  execv ("/proc/self/exe", argv);
 
   /* If we come here, we will never be able to re-exec.  */
   dbg_log (_("re-exec failed: %s; disabling paranoia mode"),