chiark / gitweb /
silence a bunch of gcc warnings
[elogind.git] / src / udev / udevd.c
index 513d1de343e69cf650084551de5b503b4128c9dc..16751144bf1a373860e5961e5814dd1a18c3932d 100644 (file)
@@ -858,11 +858,11 @@ static void static_dev_create_from_modules(struct udev *udev)
 
                 util_strscpyl(filename, sizeof(filename), "/dev/", devname, NULL);
                 mkdir_parents(filename, 0755);
-                udev_selinux_setfscreatecon(udev, filename, mode);
+                label_context_set(filename, mode);
                 log_debug("mknod '%s' %c%u:%u\n", filename, type, maj, min);
                 if (mknod(filename, mode, makedev(maj, min)) < 0 && errno == EEXIST)
                         utimensat(AT_FDCWD, filename, NULL, 0);
-                udev_selinux_resetfscreatecon(udev);
+                label_context_clear();
         }
 
         fclose(f);
@@ -871,36 +871,29 @@ static void static_dev_create_from_modules(struct udev *udev)
 /* needed for standalone udev operations */
 static void static_dev_create_links(struct udev *udev)
 {
-        DIR *dir;
         struct stdlinks {
                 const char *link;
                 const char *target;
         };
         static const struct stdlinks stdlinks[] = {
-                { "core", "/proc/kcore" },
-                { "fd", "/proc/self/fd" },
-                { "stdin", "/proc/self/fd/0" },
-                { "stdout", "/proc/self/fd/1" },
-                { "stderr", "/proc/self/fd/2" },
+                { "/dev/core", "/proc/kcore" },
+                { "/dev/fd", "/proc/self/fd" },
+                { "/dev/stdin", "/proc/self/fd/0" },
+                { "/dev/stdout", "/proc/self/fd/1" },
+                { "/dev/stderr", "/proc/self/fd/2" },
         };
         unsigned int i;
 
-        dir = opendir("/dev");
-        if (dir == NULL)
-                return;
-
         for (i = 0; i < ELEMENTSOF(stdlinks); i++) {
                 struct stat sb;
 
                 if (stat(stdlinks[i].target, &sb) == 0) {
-                        udev_selinux_setfscreateconat(udev, dirfd(dir), stdlinks[i].link, S_IFLNK);
-                        if (symlinkat(stdlinks[i].target, dirfd(dir), stdlinks[i].link) < 0 && errno == EEXIST)
-                                utimensat(dirfd(dir), stdlinks[i].link, NULL, AT_SYMLINK_NOFOLLOW);
-                        udev_selinux_resetfscreatecon(udev);
+                        label_context_set(stdlinks[i].link, S_IFLNK);
+                        if (symlink(stdlinks[i].target, stdlinks[i].link) < 0 && errno == EEXIST)
+                                utimensat(AT_FDCWD, stdlinks[i].link, NULL, AT_SYMLINK_NOFOLLOW);
+                        label_context_clear();
                 }
         }
-
-        closedir(dir);
 }
 
 static int mem_size_mb(void)
@@ -1084,7 +1077,7 @@ int main(int argc, char *argv[])
         log_parse_environment();
         udev_set_log_fn(udev, udev_main_log);
         log_debug("version %s\n", VERSION);
-        udev_selinux_init(udev);
+        label_init("/dev");
 
         for (;;) {
                 int option;
@@ -1614,7 +1607,7 @@ exit_daemonize:
         udev_queue_export_unref(udev_queue_export);
         udev_ctrl_connection_unref(ctrl_conn);
         udev_ctrl_unref(udev_ctrl);
-        udev_selinux_exit(udev);
+        label_finish();
         udev_unref(udev);
         log_close();
         return rc;