mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 17:06:39 +09:00
The goal is to move everything that requires selinux or smack away from src/basic/. This means that src/basic/label.[ch] must move, which implies btrfs-util.[ch], copy.[ch], and a bunch of other files which form a cluster of internal use. This is just moving text around, so there should be no functional difference. test-blockdev-util is new, because path_is_encrypted() is moved to blockdev-util.c, and so far we didn't have any tests for code there.
44 lines
1.7 KiB
C
44 lines
1.7 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
#include "blockdev-util.h"
|
|
#include "errno-util.h"
|
|
#include "tests.h"
|
|
|
|
static void test_path_is_encrypted_one(const char *p, int expect) {
|
|
int r;
|
|
|
|
r = path_is_encrypted(p);
|
|
if (r == -ENOENT || ERRNO_IS_PRIVILEGE(r)) /* This might fail, if btrfs is used and we run in a
|
|
* container. In that case we cannot resolve the device node paths that
|
|
* BTRFS_IOC_DEV_INFO returns, because the device nodes are unlikely to exist in
|
|
* the container. But if we can't stat() them we cannot determine the dev_t of
|
|
* them, and thus cannot figure out if they are enrypted. Hence let's just ignore
|
|
* ENOENT here. Also skip the test if we lack privileges. */
|
|
return;
|
|
assert_se(r >= 0);
|
|
|
|
log_info("%s encrypted: %s", p, yes_no(r));
|
|
|
|
assert_se(expect < 0 || ((r > 0) == (expect > 0)));
|
|
}
|
|
|
|
static void test_path_is_encrypted(void) {
|
|
int booted = sd_booted(); /* If this is run in build environments such as koji, /dev might be a
|
|
* reguar fs. Don't assume too much if not running under systemd. */
|
|
|
|
log_info("/* %s (sd_booted=%d) */", __func__, booted);
|
|
|
|
test_path_is_encrypted_one("/home", -1);
|
|
test_path_is_encrypted_one("/var", -1);
|
|
test_path_is_encrypted_one("/", -1);
|
|
test_path_is_encrypted_one("/proc", false);
|
|
test_path_is_encrypted_one("/sys", false);
|
|
test_path_is_encrypted_one("/dev", booted > 0 ? false : -1);
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
test_setup_logging(LOG_INFO);
|
|
|
|
test_path_is_encrypted();
|
|
}
|