]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fuzz-bootspec: also add loader autoentries
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 7 May 2022 09:08:04 +0000 (11:08 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 8 May 2022 15:58:00 +0000 (17:58 +0200)
src/fuzz/fuzz-bootspec-gen.py
src/fuzz/fuzz-bootspec.c
test/fuzz/fuzz-bootspec/sample1

index aaacbbe7f5995a49024691bb9d8c4da8afaf99b3..99af3f5f699dddeb05021bd0a83badda1967c751 100644 (file)
@@ -7,12 +7,15 @@ import os
 import sys
 
 config = open(sys.argv[1]).read()
+loader = [entry for entry in open(sys.argv[2], encoding='utf-16-le').read().split('\0')
+          if len(entry) > 2]   # filter out fluff from bad decoding
 entries = [(os.path.basename(name), open(name).read())
-           for name in sys.argv[2:]]
+           for name in sys.argv[3:]]
 
 data = {
     'config': config,
     'entries': entries,
+    'loader': loader,
 }
 
 print(json.dumps(data, indent=4))
index 9907457450d675fcc975c9f37a7d33ed73448d95..b59e67c24e39b75de071a79c2e7893e3275cca1b 100644 (file)
@@ -59,9 +59,23 @@ static int json_dispatch_entries(const char *name, JsonVariant *variant, JsonDis
         return 0;
 }
 
+static int json_dispatch_loader(const char *name, JsonVariant *variant, JsonDispatchFlags flags, void *userdata) {
+        BootConfig *config = ASSERT_PTR(userdata);
+        _cleanup_strv_free_ char **entries = NULL;
+        int r;
+
+        r = json_dispatch_strv(name, variant, flags, &entries);
+        if (r < 0)
+                return r;
+
+        (void) boot_config_augment_from_loader(config, entries, false);
+        return 0;
+}
+
 static const JsonDispatch data_dispatch[] = {
         { "config",  JSON_VARIANT_STRING, json_dispatch_config,  0, 0 },
         { "entries", JSON_VARIANT_ARRAY,  json_dispatch_entries, 0, 0 },
+        { "loader",  JSON_VARIANT_ARRAY,  json_dispatch_loader,  0, 0 },
         {}
 };
 
index 319c5530abd26f964b498b5aaccb3591644b79cf..1231c864df536a502233cf870ba21f2d009312db 100644 (file)
             "listing.conf",
             "title Title\nversion 3.7.2-201.fc18.x86_64\nmachine-id 4098b3f648d74c13b1f04ccfba7798e8\nsort-key 666\nlinux /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/linux\ninitrd /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/initrd\nefi /6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.x86_64/efi\noptions one two three four\ndevicetree 6a9857a393724b7a981ebb5b8495b9ea/3.8.0-2.fc19.armv7hl/tegra20-paz00.dtb\ndevicetree-overlay /6a9857a393724b7a981ebb5b8495b9ea/overlays/overlay_A.dtbo /6a9857a393724b7a981ebb5b8495b9ea/overlays/overlay_B.dtbo\narchitecture IA32\narchitecture x64\narchitecture IA64\narchitecture ARM\narchitecture AA64\n"
         ]
+    ],
+    "loader": [
+        "08a5690a2eed47cf92ac0a5d2e3cf6b0-5.17.0-0.rc5.102.fc36.x86_64.conf",
+        "08a5690a2eed47cf92ac0a5d2e3cf6b0-5.15.14-200.fc35.x86_64.conf",
+        "auto-reboot-to-firmware-setup"
     ]
 }