summaryrefslogtreecommitdiff
path: root/src/partition
diff options
context:
space:
mode:
authorDaan De Meyer <daan.j.demeyer@gmail.com>2022-10-12 14:53:48 +0200
committerDaan De Meyer <daan.j.demeyer@gmail.com>2022-11-15 20:23:51 +0100
commit0eb23798d5e8ad52d4a17e2de5f27b70a4f5b43b (patch)
tree13497b8291a0dcc41cc5fe5b8b8db50a9710108a /src/partition
parent2a99f964ff76e3a81c415e1d1ad06ed57fe44db9 (diff)
downloadsystemd-0eb23798d5e8ad52d4a17e2de5f27b70a4f5b43b.tar.gz
repart: Fail early if no sources are provided for a read-only filesystem
Diffstat (limited to 'src/partition')
-rw-r--r--src/partition/repart.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/partition/repart.c b/src/partition/repart.c
index 494a3100b7..4e309ab214 100644
--- a/src/partition/repart.c
+++ b/src/partition/repart.c
@@ -1599,6 +1599,10 @@ static int partition_read_definition(Partition *p, const char *path, const char
"Need to be root to populate %s filesystems with CopyFiles=/MakeDirectories=",
p->format);
+ if (p->format && fstype_is_ro(p->format) && strv_isempty(p->copy_files) && strv_isempty(p->make_directories))
+ return log_syntax(NULL, LOG_ERR, path, 1, SYNTHETIC_ERRNO(EINVAL),
+ "Cannot format %s filesystem without source files, refusing", p->format);
+
if (p->verity != VERITY_OFF || p->encrypt != ENCRYPT_OFF) {
r = dlopen_cryptsetup();
if (r < 0)