bectl(8): don't allow creation of boot environments with spaces
Boot environment datasets that contain spaces are not bootable. When a user attempts to create a boot environment with a space, abort the creation and print an error message. PR: 254441 Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D30194
This commit is contained in:
parent
5c447fe677
commit
0e6549c874
@ -233,7 +233,10 @@ bectl_cmd_create(int argc, char *argv[])
|
||||
bootenv = *argv;
|
||||
|
||||
err = BE_ERR_SUCCESS;
|
||||
if ((atpos = strchr(bootenv, '@')) != NULL) {
|
||||
if (strchr(bootenv, ' ') != NULL)
|
||||
/* BE datasets with spaces are not bootable */
|
||||
err = BE_ERR_INVALIDNAME;
|
||||
else if ((atpos = strchr(bootenv, '@')) != NULL) {
|
||||
/*
|
||||
* This is the "create a snapshot variant". No new boot
|
||||
* environment is to be created here.
|
||||
@ -261,6 +264,10 @@ bectl_cmd_create(int argc, char *argv[])
|
||||
switch (err) {
|
||||
case BE_ERR_SUCCESS:
|
||||
break;
|
||||
case BE_ERR_INVALIDNAME:
|
||||
fprintf(stderr,
|
||||
"bectl create: boot environment name must not contain spaces\n");
|
||||
break;
|
||||
default:
|
||||
if (atpos != NULL)
|
||||
fprintf(stderr,
|
||||
|
@ -122,6 +122,10 @@ bectl_create_body()
|
||||
atf_check zfs create -o mountpoint=/usr -o canmount=noauto \
|
||||
${zpool}/ROOT/default/usr
|
||||
|
||||
# BE datasets with spaces are not bootable, PR 254441.
|
||||
atf_check -e not-empty -s not-exit:0 \
|
||||
bectl -r ${zpool}/ROOT create "foo bar"
|
||||
|
||||
# Test standard creation, creation of a snapshot, and creation from a
|
||||
# snapshot.
|
||||
atf_check bectl -r ${zpool}/ROOT create -e default default2
|
||||
|
Loading…
Reference in New Issue
Block a user