login/user-runtime-dir: free ignored sd_bus_error, avoid triggering assertion

Fixes #33388
This commit is contained in:
Mike Yuan 2024-06-18 16:32:14 +02:00
parent 0b8a714b2b
commit 909ba69070
No known key found for this signature in database
GPG key ID: 417471C0A40F58B3

View file

@ -25,27 +25,38 @@
#include "strv.h" #include "strv.h"
#include "user-util.h" #include "user-util.h"
static int acquire_runtime_dir_properties(uint64_t *size, uint64_t *inodes) { static int acquire_runtime_dir_properties(uint64_t *ret_size, uint64_t *ret_inodes) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
uint64_t size, inodes;
int r; int r;
assert(ret_size);
assert(ret_inodes);
r = sd_bus_default_system(&bus); r = sd_bus_default_system(&bus);
if (r < 0) if (r < 0)
return log_error_errno(r, "Failed to connect to system bus: %m"); return log_error_errno(r, "Failed to connect to system bus: %m");
r = bus_get_property_trivial(bus, bus_login_mgr, "RuntimeDirectorySize", &error, 't', size); r = bus_get_property_trivial(bus, bus_login_mgr, "RuntimeDirectorySize", &error, 't', &size);
if (r < 0) { if (r < 0) {
log_warning_errno(r, "Failed to acquire runtime directory size, ignoring: %s", bus_error_message(&error, r)); log_warning_errno(r, "Failed to acquire runtime directory size, ignoring: %s", bus_error_message(&error, r));
*size = physical_memory_scale(10U, 100U); /* 10% */ sd_bus_error_free(&error);
size = physical_memory_scale(10U, 100U); /* 10% */
} }
r = bus_get_property_trivial(bus, bus_login_mgr, "RuntimeDirectoryInodesMax", &error, 't', inodes); r = bus_get_property_trivial(bus, bus_login_mgr, "RuntimeDirectoryInodesMax", &error, 't', &inodes);
if (r < 0) { if (r < 0) {
log_warning_errno(r, "Failed to acquire number of inodes for runtime directory, ignoring: %s", bus_error_message(&error, r)); log_warning_errno(r, "Failed to acquire number of inodes for runtime directory, ignoring: %s", bus_error_message(&error, r));
*inodes = DIV_ROUND_UP(*size, 4096); sd_bus_error_free(&error);
inodes = DIV_ROUND_UP(size, 4096);
} }
*ret_size = size;
*ret_inodes = inodes;
return 0; return 0;
} }