]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tmpfile-util-label: Add fopen_temporary_at_label()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 22 Dec 2022 13:27:57 +0000 (14:27 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 20 Feb 2023 11:44:44 +0000 (12:44 +0100)
src/shared/tmpfile-util-label.c
src/shared/tmpfile-util-label.h

index 17c5038b51b77a4fc9f07b1f2c1bc508f2379801..a5f364cba0a358e0b1c024b6fdb23864b0f86b1a 100644 (file)
@@ -6,7 +6,8 @@
 #include "tmpfile-util-label.h"
 #include "tmpfile-util.h"
 
-int fopen_temporary_label(
+int fopen_temporary_at_label(
+                int dir_fd,
                 const char *target,
                 const char *path,
                 FILE **f,
@@ -14,13 +15,14 @@ int fopen_temporary_label(
 
         int r;
 
+        assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
         assert(path);
 
-        r = mac_selinux_create_file_prepare(target, S_IFREG);
+        r = mac_selinux_create_file_prepare_at(dir_fd, target, S_IFREG);
         if (r < 0)
                 return r;
 
-        r = fopen_temporary(path, f, temp_path);
+        r = fopen_temporary_at(dir_fd, path, f, temp_path);
 
         mac_selinux_create_file_clear();
 
index 4987057f1330bfc0c25132c8a6bc48a1f0ae3af9..68ab0755a97a89a6f09a78b9f1c74351ac61dfa3 100644 (file)
@@ -1,10 +1,14 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
+#include <fcntl.h>
 #include <stdio.h>
 
 /* These functions are split out of tmpfile-util.h (and not for example just flags to the functions they
  * wrap) in order to optimize linking: this way, -lselinux is needed only for the callers of these functions
  * that need selinux, but not for all. */
 
-int fopen_temporary_label(const char *target, const char *path, FILE **f, char **temp_path);
+int fopen_temporary_at_label(int dir_fd, const char *target, const char *path, FILE **f, char **temp_path);
+static inline int fopen_temporary_label(const char *target, const char *path, FILE **f, char **temp_path) {
+        return fopen_temporary_at_label(AT_FDCWD, target, path, f, temp_path);
+}