summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Guthrie <colin@mageia.org>2012-08-14 22:09:39 +0100
committerHarald Hoyer <harald@redhat.com>2012-08-21 18:46:20 +0200
commit68318328f1fc394ac043b939425715ba78dc6f57 (patch)
tree6caae91af970ac0b94f173f5f79d8ed30e84f173
parentc9a9968dfc7f8fb644909cbb52e27fe7312156a7 (diff)
downloaddracut-68318328f1fc394ac043b939425715ba78dc6f57.tar.gz
dracut-68318328f1fc394ac043b939425715ba78dc6f57.tar.bz2
dracut-68318328f1fc394ac043b939425715ba78dc6f57.zip
install/dracut-install.c: Ensure deps are resolved when handling scripts
If we are doing lazy dep solving and happen to process a script with a shebang on e.g. /bin/bash before we encounter the actual binary itself we effectively ignore the fact that we've been asked to resolve the deps and put the item in the 'seen' hashmap. Thus when we later really do try and resolve deps, we short circuit and don't do anything. Example test case: $ cd $ mkdir -p foo/bin $ cp /bin/bash foo/bin $ echo '#!/bin/bash' >foo/bin/script $ dracut-install -D $HOME/foo -R $HOME/foo/bin/script $HOME/foo/bin/bash
-rw-r--r--install/dracut-install.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/install/dracut-install.c b/install/dracut-install.c
index e79065dd..9a244baa 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -392,10 +392,15 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
}
if (ret == 0) {
- log_debug("'%s' already exists", fulldstpath);
+ if (resolvedeps) {
+ log_debug("'%s' already exists, but checking for any deps", fulldstpath);
+ ret = resolve_deps(src);
+ } else
+ log_debug("'%s' already exists", fulldstpath);
+
free(fulldstpath);
/* dst does already exist */
- return 0;
+ return ret;
}
/* check destination directory */