From bec31cf5f0037dd049299e8665e03fc74024e357 Mon Sep 17 00:00:00 2001 From: Alin Popa Date: Fri, 14 Feb 2020 09:33:43 +0100 Subject: systemd: Fix busctl crash on aarch64 when setting output table format The enum used for column names is integer type while table_set_display() is parsing arguments on size_t alignment which may result in assert in table_set_display() if the size between types missmatch. This patch cast the enums to size_t. An alternative solution would be to change the table_set_display() function arguments to unsigned type. --- src/busctl/busctl.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 5f3d5ddf39..b4e133ff95 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -212,9 +212,27 @@ static int list_bus_names(int argc, char **argv, void *userdata) { return log_error_errno(r, "Failed to set sort column: %m"); if (arg_show_machine) - r = table_set_display(table, COLUMN_NAME, COLUMN_PID, COLUMN_PROCESS, COLUMN_USER, COLUMN_CONNECTION, COLUMN_UNIT, COLUMN_SESSION, COLUMN_DESCRIPTION, COLUMN_MACHINE, (size_t) -1); + r = table_set_display(table, (size_t) COLUMN_NAME, + (size_t) COLUMN_PID, + (size_t) COLUMN_PROCESS, + (size_t) COLUMN_USER, + (size_t) COLUMN_CONNECTION, + (size_t) COLUMN_UNIT, + (size_t) COLUMN_SESSION, + (size_t) COLUMN_DESCRIPTION, + (size_t) COLUMN_MACHINE, + (size_t) -1); else - r = table_set_display(table, COLUMN_NAME, COLUMN_PID, COLUMN_PROCESS, COLUMN_USER, COLUMN_CONNECTION, COLUMN_UNIT, COLUMN_SESSION, COLUMN_DESCRIPTION, (size_t) -1); + r = table_set_display(table, (size_t) COLUMN_NAME, + (size_t) COLUMN_PID, + (size_t) COLUMN_PROCESS, + (size_t) COLUMN_USER, + (size_t) COLUMN_CONNECTION, + (size_t) COLUMN_UNIT, + (size_t) COLUMN_SESSION, + (size_t) COLUMN_DESCRIPTION, + (size_t) -1); + if (r < 0) return log_error_errno(r, "Failed to set columns to display: %m"); -- cgit v1.2.1