diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/copy_file.c | 2 | ||||
-rw-r--r-- | libbb/selinux_common.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/libbb/copy_file.c b/libbb/copy_file.c index 6391824aa..07564afd0 100644 --- a/libbb/copy_file.c +++ b/libbb/copy_file.c @@ -74,7 +74,7 @@ int copy_file(const char *source, const char *dest, int flags) } } else { if (errno == ENOTSUP || errno == ENODATA) { - setfscreatecon(NULL); + setfscreatecon_or_die(NULL); } else { bb_perror_msg("cannot lgetfilecon %s", source); return -1; diff --git a/libbb/selinux_common.c b/libbb/selinux_common.c index 70d63a465..d506f0636 100644 --- a/libbb/selinux_common.c +++ b/libbb/selinux_common.c @@ -28,3 +28,13 @@ error: context_free(con); return NULL; } + +void setfscreatecon_or_die(security_context_t scontext) +{ + if (setfscreatecon(scontext) < 0) { + /* Can be NULL. All known printf implementations + * display "(null)", "<null>" etc */ + bb_perror_msg_and_die("cannot set default " + "file creation context to %s", scontext); + } +} |