Coverage Report

Created: 2026-04-29 07:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/systemd/src/xdg-autostart-generator/fuzz-xdg-desktop.c
Line
Count
Source
1
/* SPDX-License-Identifier: LGPL-2.1-or-later */
2
3
#include <unistd.h>
4
5
#include "fd-util.h"
6
#include "fuzz.h"
7
#include "rm-rf.h"
8
#include "tmpfile-util.h"
9
#include "xdg-autostart-service.h"
10
11
2.42k
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
12
2.42k
        _cleanup_(unlink_tempfilep) char name[] = "/tmp/fuzz-xdg-desktop.XXXXXX";
13
2.42k
        _cleanup_close_ int fd = -EBADF;
14
2.42k
        _cleanup_(xdg_autostart_service_freep) XdgAutostartService *service = NULL;
15
2.42k
        _cleanup_(rm_rf_physical_and_freep) char *tmpdir = NULL;
16
17
2.42k
        if (outside_size_range(size, 0, 65536))
18
8
                return 0;
19
20
2.41k
        fuzz_setup_logging();
21
22
2.41k
        assert_se(mkdtemp_malloc("/tmp/fuzz-xdg-desktop-XXXXXX", &tmpdir) >= 0);
23
24
2.41k
        fd = mkostemp_safe(name);
25
2.41k
        assert_se(fd >= 0);
26
2.41k
        assert_se(write(fd, data, size) == (ssize_t) size);
27
28
2.41k
        assert_se(service = xdg_autostart_service_parse_desktop(name));
29
2.41k
        assert_se(service->name = strdup("fuzz-xdg-desktop.service"));
30
2.41k
        (void) xdg_autostart_service_generate_unit(service, tmpdir);
31
32
2.41k
        return 0;
33
2.42k
}