diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-03-16 22:33:01 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-03-16 22:33:01 +0000 |
commit | d9822dbe663a7cefe32979e09a186f739ea8b769 (patch) | |
tree | 223a75f50009f160812a894cb187a71b64976d2c | |
parent | 2ca285b098890abde89fc79bbaf69432b14f18d1 (diff) | |
download | glibc-d9822dbe663a7cefe32979e09a186f739ea8b769.zip glibc-d9822dbe663a7cefe32979e09a186f739ea8b769.tar.gz glibc-d9822dbe663a7cefe32979e09a186f739ea8b769.tar.bz2 |
* nscd/connections.c (restart): Try to preserve the process name
by reading the /proc/self/exe symlink and using the return name.
Patch by Jeff Bastian <jbastian@redhat.com>.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | nscd/connections.c | 17 |
2 files changed, 22 insertions, 1 deletions
@@ -1,3 +1,9 @@ +2009-03-16 Ulrich Drepper <drepper@redhat.com> + + * nscd/connections.c (restart): Try to preserve the process name + by reading the /proc/self/exe symlink and using the return name. + Patch by Jeff Bastian <jbastian@redhat.com>. + 2009-03-15 Ulrich Drepper <drepper@redhat.com> [BZ #9733] diff --git a/nscd/connections.c b/nscd/connections.c index 3d0727f..234e289 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -1418,7 +1418,22 @@ cannot change to old working directory: %s; disabling paranoia mode"), } /* The preparations are done. */ - execv ("/proc/self/exe", argv); +#ifdef PATH_MAX + char pathbuf[PATH_MAX]; +#else + char pathbuf[256]; +#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 */ + ssize_t n = readlink ("/proc/self/exe", pathbuf, sizeof (pathbuf) - 1); + if (n == -1) + execv ("/proc/self/exe", argv); + else + { + pathbuf[n] = '\0'; + execv (pathbuf, argv); + } /* If we come here, we will never be able to re-exec. */ dbg_log (_("re-exec failed: %s; disabling paranoia mode"), |