chiark / gitweb /
resolve: reject empty TXT records
[elogind.git] / src / core / kmod-setup.c
index 23df1fdf36d12569a291e24aa0950a1785c40333..4795a47eb4b87b172b66878464cad2024ede847a 100644 (file)
@@ -50,11 +50,24 @@ static void systemd_kmod_log(
 
 static bool cmdline_check_kdbus(void) {
         _cleanup_free_ char *line = NULL;
+        const char *p;
+        int r;
 
-        if (proc_cmdline(&line) < 0)
+        r = proc_cmdline(&line);
+        if (r < 0)
                 return false;
 
-        return strstr(line, "kdbus") != NULL;
+        p = line;
+        for (;;) {
+                _cleanup_free_ char *word = NULL;
+
+                r = unquote_first_word(&p, &word, true);
+                if (r <= 0)
+                        return false;
+
+                if (streq(word, "kdbus"))
+                        return true;
+        }
 }
 #endif
 
@@ -68,13 +81,13 @@ int kmod_setup(void) {
                 bool (*condition_fn)(void);
         } kmod_table[] = {
                 /* auto-loading on use doesn't work before udev is up */
-                { "autofs4", "/sys/class/misc/autofs", true, NULL },
+                { "autofs4", "/sys/class/misc/autofs", true, NULL                 },
 
                 /* early configure of ::1 on the loopback device */
-                { "ipv6",    "/sys/module/ipv6",       true, NULL },
+                { "ipv6",    "/sys/module/ipv6",       true, NULL                 },
 
                 /* this should never be a module */
-                { "unix",    "/proc/net/unix",         true, NULL },
+                { "unix",    "/proc/net/unix",         true, NULL                 },
 
                 /* IPC is needed before we bring up any other services */
                 { "kdbus",   "/sys/fs/kdbus",          false, cmdline_check_kdbus },