summaryrefslogtreecommitdiff
path: root/install
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2012-07-11 15:47:10 +0200
committerHarald Hoyer <harald@redhat.com>2012-07-11 15:47:10 +0200
commitf6c2faebfafb95ae7ce14fe678582077af20c3c0 (patch)
tree6f0122569fc056b691d88481d5b3f4ccf46ab391 /install
parent98eb6d57dffda383620f237eaee08c97bf35d863 (diff)
downloaddracut-f6c2faebfafb95ae7ce14fe678582077af20c3c0.tar.gz
dracut-f6c2faebfafb95ae7ce14fe678582077af20c3c0.tar.bz2
dracut-f6c2faebfafb95ae7ce14fe678582077af20c3c0.zip
install/dracut-install.c: check for empty or "/" destdir
Diffstat (limited to 'install')
-rw-r--r--install/dracut-install.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/install/dracut-install.c b/install/dracut-install.c
index ee6950ae..93514725 100644
--- a/install/dracut-install.c
+++ b/install/dracut-install.c
@@ -182,7 +182,7 @@ static int cp(const char *src, const char *dst)
int pid;
int ret;
- if(use_clone) {
+ if (use_clone) {
struct stat sb;
int dest_desc, source_desc;
@@ -197,8 +197,8 @@ static int cp(const char *src, const char *dst)
goto normal_copy;
dest_desc =
- open(dst, O_WRONLY | O_CREAT | O_EXCL | O_CLOEXEC,
- (sb.st_mode) & (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO));
+ open(dst, O_WRONLY | O_CREAT | O_EXCL | O_CLOEXEC,
+ (sb.st_mode) & (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO));
if (dest_desc < 0) {
close(source_desc);
@@ -379,7 +379,6 @@ static int dracut_install(const char *src, const char *dst, bool isdir, bool res
}
}
-
i = strdup(dst);
hashmap_put(items, i, i);
@@ -731,15 +730,21 @@ int main(int argc, char **argv)
umask(0022);
- if (destrootdir == NULL) {
+ if (destrootdir == NULL || strlen(destrootdir) == 0) {
destrootdir = getenv("DESTROOTDIR");
- if (destrootdir == NULL) {
+ if (destrootdir == NULL || strlen(destrootdir) == 0) {
log_error("Environment DESTROOTDIR or argument -D is not set!");
usage(EXIT_FAILURE);
}
destrootdir = strdup(destrootdir);
}
+ if (strcmp(destrootdir, "/") == 0) {
+ log_error("Environment DESTROOTDIR or argument -D is set to '/'!");
+ usage(EXIT_FAILURE);
+
+ }
+
items = hashmap_new(string_hash_func, string_compare_func);
items_failed = hashmap_new(string_hash_func, string_compare_func);