summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlin Popa <alin.popa@bmw.de>2020-02-14 09:33:43 +0100
committerAdrian Szyndela <adrian.s@samsung.com>2021-03-22 10:51:54 +0100
commit6a342b738481c9da3c1149432659f8c2eb1cc139 (patch)
tree41bc7c62b2ac4485c2e7506e8ac0189bcabce389
parenta997cbdee71cf450228c2287220bbef27cb41b98 (diff)
downloadsystemd-6a342b738481c9da3c1149432659f8c2eb1cc139.tar.gz
systemd-6a342b738481c9da3c1149432659f8c2eb1cc139.tar.bz2
systemd-6a342b738481c9da3c1149432659f8c2eb1cc139.zip
systemd: Fix busctl crash on aarch64 when setting output table formatsubmit/tizen/20210322.103524
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. Change-Id: I862db0168d58ecb3b7ee7dcf7f751be5a6121fd9
-rw-r--r--src/busctl/busctl.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c
index 181c5304d9..729dca5cac 100644
--- a/src/busctl/busctl.c
+++ b/src/busctl/busctl.c
@@ -216,9 +216,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");