diff options
Diffstat (limited to 'main/mkinitfs/0001-nlplug-findfs-fix-when-cryptheader-is-a-regular-file.patch')
-rw-r--r-- | main/mkinitfs/0001-nlplug-findfs-fix-when-cryptheader-is-a-regular-file.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/main/mkinitfs/0001-nlplug-findfs-fix-when-cryptheader-is-a-regular-file.patch b/main/mkinitfs/0001-nlplug-findfs-fix-when-cryptheader-is-a-regular-file.patch new file mode 100644 index 0000000000..11c1300f06 --- /dev/null +++ b/main/mkinitfs/0001-nlplug-findfs-fix-when-cryptheader-is-a-regular-file.patch @@ -0,0 +1,45 @@ +From bedf249e829f34d51cc8c4e4eef864b9b6163450 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Wed, 29 May 2019 13:19:24 +0200 +Subject: [PATCH] nlplug-findfs: fix when cryptheader is a regular file + +Handle case when the crypt header is a normal file which is included in +initramfs and not a blockdevice. +--- + nlplug-findfs.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/nlplug-findfs.c b/nlplug-findfs.c +index 0283161..9f15de5 100644 +--- a/nlplug-findfs.c ++++ b/nlplug-findfs.c +@@ -1213,6 +1213,13 @@ static void usage(int rc) + exit(rc); + } + ++static int regular_file(const char *path) ++{ ++ struct stat st; ++ int r = stat(path, &st); ++ return r == -1 ? 0 : S_ISREG(st.st_mode); ++} ++ + int main(int argc, char *argv[]) + { + struct pollfd fds[3]; +@@ -1262,6 +1269,12 @@ int main(int argc, char *argv[]) + break; + case 'H': + conf.crypt.header.device = EARGF(usage(1)); ++ /* the header may be in a regular file and not a device */ ++ if (regular_file(conf.crypt.header.device)) { ++ snprintf(conf.crypt.header.devnode, ++ sizeof(conf.crypt.header.devnode), ++ "%s", conf.crypt.header.device); ++ } + break; + case 'h': + usage(0); +-- +2.21.0 + |