chiark / gitweb /
selinux: more context settings
[elogind.git] / udev_db.c
index 29aa0316d28bf1e88d671a1b1a3a408860d5b1b5..444725329f22c2de490a8d933478fa117191985d 100644 (file)
--- a/udev_db.c
+++ b/udev_db.c
@@ -37,7 +37,7 @@ static size_t devpath_to_db_path(const char *devpath, char *filename, size_t len
 {
        size_t start;
 
-       /* add location of db files */
+       /* translate to location of db file */
        strlcpy(filename, udev_root, len);
        start = strlcat(filename, "/"DB_DIR"/", len);
        strlcat(filename, devpath, len);
@@ -144,8 +144,12 @@ int udev_db_add_device(struct udevice *udev)
         */
        if (list_empty(&udev->symlink_list) && list_empty(&udev->env_list) &&
            !udev->partitions && !udev->ignore_remove) {
+               int ret;
                dbg("nothing interesting to store, create symlink");
-               if (symlink(udev->name, filename) != 0) {
+               selinux_setfscreatecon(filename, NULL, S_IFLNK);        
+               ret = symlink(udev->name, filename);
+               selinux_resetfscreatecon();
+               if (ret != 0) {
                        err("unable to create db link '%s': %s", filename, strerror(errno));
                        return -1;
                }