dbg(udev, "selinux=%i\n", selinux_enabled);
if (!selinux_enabled)
return;
- matchpathcon_init_prefix(NULL, udev_get_dev_path(udev));
+ matchpathcon_init_prefix(NULL, TEST_PREFIX "/dev");
if (getfscreatecon(&selinux_prev_scontext) < 0) {
err(udev, "getfscreatecon failed\n");
selinux_prev_scontext = NULL;
if (setfscreatecon(selinux_prev_scontext) < 0)
err(udev, "setfscreatecon failed: %m\n");
}
-
-void udev_selinux_setfscreateconat(struct udev *udev, int dfd, const char *file, unsigned int mode)
-{
- char filename[UTIL_PATH_SIZE];
-
- if (!selinux_enabled)
- return;
-
- /* resolve relative filename */
- if (file[0] != '/') {
- char procfd[UTIL_PATH_SIZE];
- char target[UTIL_PATH_SIZE];
- ssize_t len;
-
- snprintf(procfd, sizeof(procfd), "/proc/%u/fd/%u", getpid(), dfd);
- len = readlink(procfd, target, sizeof(target));
- if (len <= 0 || len == sizeof(target))
- return;
- target[len] = '\0';
-
- util_strscpyl(filename, sizeof(filename), target, "/", file, NULL);
- file = filename;
- }
- udev_selinux_setfscreatecon(udev, file, mode);
-}