]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mountfsd: add recognizable error if we pass an fd with unexpected flags
authorLennart Poettering <lennart@poettering.net>
Tue, 19 Aug 2025 19:06:48 +0000 (21:06 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Sep 2025 19:33:41 +0000 (21:33 +0200)
src/mountfsd/mountwork.c
src/shared/varlink-io.systemd.MountFileSystem.c

index bfb8c05c22cdd4971958e7845d173154d10d9664..fb1d8ebcb48bfa581563dbe211b874d7f3145eb0 100644 (file)
@@ -771,6 +771,8 @@ static int vl_method_mount_directory(
                 return log_debug_errno(r, "Failed to get client UID: %m");
 
         DirectoryOwnership owned_by = validate_directory_fd(directory_fd, peer_uid);
+        if (owned_by == -EREMOTEIO)
+                return sd_varlink_errorbo(link, "io.systemd.MountFileSystem.BadFileDescriptorFlags", SD_JSON_BUILD_PAIR_STRING("parameter", "directoryFileDescriptor"));
         if (owned_by < 0)
                 return owned_by;
 
index e8bfe717114728f66d21f6ce4aa5fc27717a5be0..01978f9eb25b613adcae6f15a9077dac70e3aadc 100644 (file)
@@ -115,6 +115,9 @@ static SD_VARLINK_DEFINE_ERROR(RootPartitionNotFound);
 static SD_VARLINK_DEFINE_ERROR(DeniedByImagePolicy);
 static SD_VARLINK_DEFINE_ERROR(KeyNotFound);
 static SD_VARLINK_DEFINE_ERROR(VerityFailure);
+static SD_VARLINK_DEFINE_ERROR(BadFileDescriptorFlags,
+                               SD_VARLINK_FIELD_COMMENT("Name of the parameter referencing the file descriptor with one or more bad flag."),
+                               SD_VARLINK_DEFINE_FIELD(parameter, SD_VARLINK_STRING, 0));
 
 SD_VARLINK_DEFINE_INTERFACE(
                 io_systemd_MountFileSystem,
@@ -143,4 +146,6 @@ SD_VARLINK_DEFINE_INTERFACE(
                 SD_VARLINK_SYMBOL_COMMENT("The authentication key for this image is not available."),
                 &vl_error_KeyNotFound,
                 SD_VARLINK_SYMBOL_COMMENT("Verity could not be set up."),
-                &vl_error_VerityFailure);
+                &vl_error_VerityFailure,
+                SD_VARLINK_SYMBOL_COMMENT("A passed file descriptor has unexpected/forbidden flags set."),
+                &vl_error_BadFileDescriptorFlags);