1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
index b1b2391b..6cee3f8e 100644
--- a/src/install/dracut-install.c
+++ b/src/install/dracut-install.c
@@ -440,7 +440,7 @@ normal_copy:
const char *preservation = (geteuid() == 0
&& no_xattr == false) ? "--preserve=mode,xattr,timestamps,ownership" : "--preserve=mode,timestamps,ownership";
if (pid == 0) {
- execlp("cp", "cp", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL);
+ execlp("cp", "cp", "--remove-destination", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL);
_exit(errno == ENOENT ? 127 : 126);
}
@@ -1203,6 +1203,8 @@ static int resolve_deps(const char *src, Hashmap *pdeps)
char *p, *q;
for (p = &shebang[2]; *p && isspace(*p); p++) ;
for (q = p; *q && (!isspace(*q)); q++) ;
+ if (strncmp(p, "/bin/ash", q - p) == 0)
+ goto finish;
char *interpreter = strndup(p, q - p);
log_debug("Script install: '%s'", interpreter);
ret = dracut_install(interpreter, interpreter, false, true, false);
|