summaryrefslogtreecommitdiffstats
path: root/src/shared/tmpfile-util-label.c
blob: a5f364cba0a358e0b1c024b6fdb23864b0f86b1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* SPDX-License-Identifier: LGPL-2.1-or-later */

#include <sys/stat.h>

#include "selinux-util.h"
#include "tmpfile-util-label.h"
#include "tmpfile-util.h"

int fopen_temporary_at_label(
                int dir_fd,
                const char *target,
                const char *path,
                FILE **f,
                char **temp_path) {

        int r;

        assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
        assert(path);

        r = mac_selinux_create_file_prepare_at(dir_fd, target, S_IFREG);
        if (r < 0)
                return r;

        r = fopen_temporary_at(dir_fd, path, f, temp_path);

        mac_selinux_create_file_clear();

        return r;
}