From 28d9ca42574efab83d8adb9b6ab9e368d0eb255b Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Wed, 27 Jul 2011 11:02:23 -0500 Subject: [PATCH] do not treat symbolic links specially in init.d symbolic links should not be followed in an attempt to work out the name of the service we are running. X-Gentoo-Bug: 350910 X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=350910 --- src/rc/runscript.c | 38 ++------------------------------------ 1 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/rc/runscript.c b/src/rc/runscript.c index 02d9e7e..8278f5b 100644 --- a/src/rc/runscript.c +++ b/src/rc/runscript.c @@ -1100,8 +1100,7 @@ runscript(int argc, char **argv) bool doneone = false; int retval, opt, depoptions = RC_DEP_TRACE; RC_STRING *svc; - char path[PATH_MAX], lnk[PATH_MAX]; - char *dir, *save = NULL, *saveLnk = NULL; + char *save = NULL; char pidstr[10]; size_t l = 0, ll; const char *file; @@ -1121,40 +1120,7 @@ runscript(int argc, char **argv) atexit(cleanup); - /* We need to work out the real full path to our service. - * This works fine, provided that we ONLY allow multiplexed services - * to exist in the same directory as the master link. - * Also, the master link as to be a real file in the init dir. */ - if (!realpath(argv[1], path)) { - fprintf(stderr, "realpath: %s\n", strerror(errno)); - exit(EXIT_FAILURE); - } - memset(lnk, 0, sizeof(lnk)); - if (readlink(argv[1], lnk, sizeof(lnk)-1)) { - dir = dirname(path); - if (strchr(lnk, '/')) { - save = xstrdup(dir); - saveLnk = xstrdup(lnk); - dir = dirname(saveLnk); - if (strcmp(dir, save) == 0) - file = basename_c(argv[1]); - else - file = basename_c(lnk); - dir = save; - } else - file = basename_c(argv[1]); - ll = strlen(dir) + strlen(file) + 2; - service = xmalloc(ll); - snprintf(service, ll, "%s/%s", dir, file); - if (stat(service, &stbuf) != 0) { - free(service); - service = xstrdup(lnk); - } - free(save); - free(saveLnk); - } - if (!service) - service = xstrdup(path); + service = xstrdup(argv[1]); applet = basename_c(service); if (argc < 3) -- 1.7.3.4