import UBI systemd-239-82.el8_10.13
This commit is contained in:
parent
a4c73665dd
commit
c5cbe2b865
@ -0,0 +1,110 @@
|
||||
From d2cd65067fc614367a4efe460de5006ad3cfdb91 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Thu, 30 May 2024 10:44:36 +0200
|
||||
Subject: [PATCH] cryptsetup-generator: refactor add_crypttab_devices()
|
||||
|
||||
Move the processing of a crypttab entry to a separate function.
|
||||
|
||||
No functional changes, just refactoring.
|
||||
|
||||
(cherry picked from commit a07cb7d404582f9c0bfaedb9dd07f93848aa91c6)
|
||||
|
||||
Related: RHEL-38859
|
||||
---
|
||||
src/cryptsetup/cryptsetup-generator.c | 63 ++++++++++++++++-----------
|
||||
1 file changed, 38 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
|
||||
index 4117930925..50c2a5093a 100644
|
||||
--- a/src/cryptsetup/cryptsetup-generator.c
|
||||
+++ b/src/cryptsetup/cryptsetup-generator.c
|
||||
@@ -525,10 +525,44 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int add_crypttab_device(const char *name, const char *device, const char *keyspec, const char *options) {
|
||||
+ _cleanup_free_ char *keyfile = NULL, *keydev = NULL;
|
||||
+ crypto_device *d = NULL;
|
||||
+ char *uuid;
|
||||
+ int r;
|
||||
+
|
||||
+ uuid = startswith(device, "UUID=");
|
||||
+ if (!uuid)
|
||||
+ uuid = path_startswith(device, "/dev/disk/by-uuid/");
|
||||
+ if (!uuid)
|
||||
+ uuid = startswith(name, "luks-");
|
||||
+ if (uuid)
|
||||
+ d = hashmap_get(arg_disks, uuid);
|
||||
+
|
||||
+ if (arg_whitelist && !d) {
|
||||
+ log_info("Not creating device '%s' because it was not specified on the kernel command line.", name);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ r = split_keyspec(keyspec, &keyfile, &keydev);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+
|
||||
+ r = create_disk(name, device, keyfile, keydev, (d && d->options) ? d->options : options);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+
|
||||
+ if (d)
|
||||
+ d->create = false;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int add_crypttab_devices(void) {
|
||||
struct stat st;
|
||||
unsigned crypttab_line = 0;
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
+ int r;
|
||||
|
||||
if (!arg_read_crypttab)
|
||||
return 0;
|
||||
@@ -548,10 +582,9 @@ static int add_crypttab_devices(void) {
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
- int r, k;
|
||||
- char line[LINE_MAX], *l, *uuid;
|
||||
- crypto_device *d = NULL;
|
||||
- _cleanup_free_ char *name = NULL, *device = NULL, *keydev = NULL, *keyfile = NULL, *keyspec = NULL, *options = NULL;
|
||||
+ char line[LINE_MAX], *l;
|
||||
+ _cleanup_free_ char *name = NULL, *device = NULL, *keyspec = NULL, *options = NULL;
|
||||
+ int k;
|
||||
|
||||
if (!fgets(line, sizeof(line), f))
|
||||
break;
|
||||
@@ -568,29 +601,9 @@ static int add_crypttab_devices(void) {
|
||||
continue;
|
||||
}
|
||||
|
||||
- uuid = startswith(device, "UUID=");
|
||||
- if (!uuid)
|
||||
- uuid = path_startswith(device, "/dev/disk/by-uuid/");
|
||||
- if (!uuid)
|
||||
- uuid = startswith(name, "luks-");
|
||||
- if (uuid)
|
||||
- d = hashmap_get(arg_disks, uuid);
|
||||
-
|
||||
- if (arg_whitelist && !d) {
|
||||
- log_info("Not creating device '%s' because it was not specified on the kernel command line.", name);
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- r = split_keyspec(keyspec, &keyfile, &keydev);
|
||||
+ r = add_crypttab_device(name, device, keyspec, options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
-
|
||||
- r = create_disk(name, device, keyfile, keydev, (d && d->options) ? d->options : options);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
-
|
||||
- if (d)
|
||||
- d->create = false;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -0,0 +1,43 @@
|
||||
From 19a8582024046a483f1631fd6be43126ea30b67c Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Thu, 30 May 2024 10:46:13 +0200
|
||||
Subject: [PATCH] cryptsetup-generator: continue parsing after error
|
||||
|
||||
Let's make the crypttab parser more robust and continue even if parsing
|
||||
of a line failed.
|
||||
|
||||
(cherry picked from commit 83813bae7ae471862ff84b038b5e4eaefae41c98)
|
||||
|
||||
Resolves: RHEL-38859
|
||||
---
|
||||
src/cryptsetup/cryptsetup-generator.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
|
||||
index 50c2a5093a..ae3e2282fd 100644
|
||||
--- a/src/cryptsetup/cryptsetup-generator.c
|
||||
+++ b/src/cryptsetup/cryptsetup-generator.c
|
||||
@@ -562,7 +562,7 @@ static int add_crypttab_devices(void) {
|
||||
struct stat st;
|
||||
unsigned crypttab_line = 0;
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
- int r;
|
||||
+ int r, ret = 0;
|
||||
|
||||
if (!arg_read_crypttab)
|
||||
return 0;
|
||||
@@ -602,11 +602,11 @@ static int add_crypttab_devices(void) {
|
||||
}
|
||||
|
||||
r = add_crypttab_device(name, device, keyspec, options);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
+ if (r < 0 && ret >= 0)
|
||||
+ ret = r;
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static int add_proc_cmdline_devices(void) {
|
||||
@ -0,0 +1,48 @@
|
||||
From fea96208a7fbe748e2aefbf0c52dafcbf691f05f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Lu=C3=ADs=20Ferreira?= <contact@lsferreira.net>
|
||||
Date: Sat, 13 Apr 2019 19:12:51 +0100
|
||||
Subject: [PATCH] hwdb: add ACCEL_LOCATION property to parse_hwdb.py
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Luís Ferreira <contact@lsferreira.net>
|
||||
(cherry picked from commit ccf478417455ab1191571923fa640363d4c4b7a6)
|
||||
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index 4900a25778..6943c688eb 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -128,6 +128,7 @@ def property_grammar():
|
||||
('KEYBOARD_LED_NUMLOCK', Literal('0')),
|
||||
('KEYBOARD_LED_CAPSLOCK', Literal('0')),
|
||||
('ACCEL_MOUNT_MATRIX', mount_matrix),
|
||||
+ ('ACCEL_LOCATION', STRING),
|
||||
)
|
||||
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
|
||||
for name, val in props]
|
||||
@@ -179,6 +180,10 @@ def check_one_default(prop, settings):
|
||||
if len(defaults) > 1:
|
||||
error('More than one star entry: {!r}', prop)
|
||||
|
||||
+def check_one_accel_location(prop, value):
|
||||
+ if value not in ['base', 'display']:
|
||||
+ error('Wrong accel location: {!r}', prop)
|
||||
+
|
||||
def check_one_mount_matrix(prop, value):
|
||||
numbers = [s for s in value if s not in {';', ','}]
|
||||
if len(numbers) != 9:
|
||||
@@ -221,6 +226,8 @@ def check_properties(groups):
|
||||
check_one_default(prop, parsed.VALUE.SETTINGS)
|
||||
elif parsed.NAME == 'ACCEL_MOUNT_MATRIX':
|
||||
check_one_mount_matrix(prop, parsed.VALUE)
|
||||
+ elif parsed.NAME == 'ACCEL_LOCATION':
|
||||
+ check_one_accel_location(prop, parsed.VALUE)
|
||||
elif parsed.NAME.startswith('KEYBOARD_KEY_'):
|
||||
check_one_keycode(prop, parsed.VALUE)
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From 36167a7b6617b0c8e1e15a91eccf5cdb19f0ee1b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Lu=C3=ADs=20Ferreira?= <contact@lsferreira.net>
|
||||
Date: Sun, 19 May 2019 19:22:41 +0100
|
||||
Subject: [PATCH] hwdb: update ACCEL_LOCATION property to use Or instead of
|
||||
QuotedString
|
||||
|
||||
(cherry picked from commit 331e34fe1db427127aefa3b5ca6d5b568ecf86d2)
|
||||
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 8 +-------
|
||||
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index 6943c688eb..99fb5b1438 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -128,7 +128,7 @@ def property_grammar():
|
||||
('KEYBOARD_LED_NUMLOCK', Literal('0')),
|
||||
('KEYBOARD_LED_CAPSLOCK', Literal('0')),
|
||||
('ACCEL_MOUNT_MATRIX', mount_matrix),
|
||||
- ('ACCEL_LOCATION', STRING),
|
||||
+ ('ACCEL_LOCATION', Or(('display', 'base'))),
|
||||
)
|
||||
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
|
||||
for name, val in props]
|
||||
@@ -180,10 +180,6 @@ def check_one_default(prop, settings):
|
||||
if len(defaults) > 1:
|
||||
error('More than one star entry: {!r}', prop)
|
||||
|
||||
-def check_one_accel_location(prop, value):
|
||||
- if value not in ['base', 'display']:
|
||||
- error('Wrong accel location: {!r}', prop)
|
||||
-
|
||||
def check_one_mount_matrix(prop, value):
|
||||
numbers = [s for s in value if s not in {';', ','}]
|
||||
if len(numbers) != 9:
|
||||
@@ -226,8 +222,6 @@ def check_properties(groups):
|
||||
check_one_default(prop, parsed.VALUE.SETTINGS)
|
||||
elif parsed.NAME == 'ACCEL_MOUNT_MATRIX':
|
||||
check_one_mount_matrix(prop, parsed.VALUE)
|
||||
- elif parsed.NAME == 'ACCEL_LOCATION':
|
||||
- check_one_accel_location(prop, parsed.VALUE)
|
||||
elif parsed.NAME.startswith('KEYBOARD_KEY_'):
|
||||
check_one_keycode(prop, parsed.VALUE)
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
From 1c772da6f3e7a588e8a73af4e26947d25c3053a8 Mon Sep 17 00:00:00 2001
|
||||
From: Frantisek Sumsal <fsumsal@redhat.com>
|
||||
Date: Tue, 25 Nov 2025 17:45:27 +0100
|
||||
Subject: [PATCH] test: support general properties in hwdb files
|
||||
|
||||
Loosely cherry-picked from aa549ff3972b067c4225db0a845f5c638842fba3.
|
||||
|
||||
rhel-only
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 18 +++++++++++++++++-
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index 99fb5b1438..c94ad9bea6 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -70,13 +70,28 @@ TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
|
||||
'sensor': ('modalias', ),
|
||||
}
|
||||
|
||||
+# Patterns that are used to set general properties on a device
|
||||
+GENERAL_MATCHES = {'acpi',
|
||||
+ 'bluetooth',
|
||||
+ 'usb',
|
||||
+ 'pci',
|
||||
+ 'sdio',
|
||||
+ 'vmbus',
|
||||
+ 'OUI',
|
||||
+ }
|
||||
+
|
||||
+
|
||||
@lru_cache()
|
||||
def hwdb_grammar():
|
||||
ParserElement.setDefaultWhitespaceChars('')
|
||||
|
||||
prefix = Or(category + ':' + Or(conn) + ':'
|
||||
for category, conn in TYPES.items())
|
||||
- matchline = Combine(prefix + Word(printables + ' ' + '®')) + EOL
|
||||
+
|
||||
+ matchline_typed = Combine(prefix + Word(printables + ' ' + '®'))
|
||||
+ matchline_general = Combine(Or(GENERAL_MATCHES) + ':' + Word(printables))
|
||||
+ matchline = (matchline_typed | matchline_general) + EOL
|
||||
+
|
||||
propertyline = (White(' ', exact=1).suppress() +
|
||||
Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.!-;, "') - Optional(pythonStyleComment)) +
|
||||
EOL)
|
||||
@@ -104,6 +119,7 @@ def property_grammar():
|
||||
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
|
||||
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
|
||||
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
|
||||
+ ('ID_AUTOSUSPEND', Literal('1')),
|
||||
('ID_INPUT', Literal('1')),
|
||||
('ID_INPUT_ACCELEROMETER', Literal('1')),
|
||||
('ID_INPUT_JOYSTICK', Literal('1')),
|
||||
@ -0,0 +1,56 @@
|
||||
From 77fec6b9de7ae11fe69d0ff48cfd4406345be3f9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Bj=C3=B6rn=20Daase?= <bjoern@daase.net>
|
||||
Date: Fri, 8 Jan 2021 10:32:36 +0100
|
||||
Subject: [PATCH] hwdb: Relax parsing script to allow 0 and 1 for all ID_*
|
||||
properties
|
||||
|
||||
(cherry picked from commit ad0d9c0109d45c12c6517684d84ea033cf8d54a7)
|
||||
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index c94ad9bea6..d15ae0470c 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -119,22 +119,22 @@ def property_grammar():
|
||||
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
|
||||
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
|
||||
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
|
||||
- ('ID_AUTOSUSPEND', Literal('1')),
|
||||
- ('ID_INPUT', Literal('1')),
|
||||
- ('ID_INPUT_ACCELEROMETER', Literal('1')),
|
||||
- ('ID_INPUT_JOYSTICK', Literal('1')),
|
||||
- ('ID_INPUT_KEY', Literal('1')),
|
||||
- ('ID_INPUT_KEYBOARD', Literal('1')),
|
||||
- ('ID_INPUT_MOUSE', Literal('1')),
|
||||
- ('ID_INPUT_POINTINGSTICK', Literal('1')),
|
||||
- ('ID_INPUT_SWITCH', Literal('1')),
|
||||
- ('ID_INPUT_TABLET', Literal('1')),
|
||||
- ('ID_INPUT_TABLET_PAD', Literal('1')),
|
||||
- ('ID_INPUT_TOUCHPAD', Literal('1')),
|
||||
- ('ID_INPUT_TOUCHSCREEN', Literal('1')),
|
||||
- ('ID_INPUT_TRACKBALL', Literal('1')),
|
||||
- ('MOUSE_WHEEL_TILT_HORIZONTAL', Literal('1')),
|
||||
- ('MOUSE_WHEEL_TILT_VERTICAL', Literal('1')),
|
||||
+ ('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_ACCELEROMETER', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_JOYSTICK', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_KEY', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_KEYBOARD', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_MOUSE', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_POINTINGSTICK', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_SWITCH', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_TABLET', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_TABLET_PAD', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_TOUCHPAD', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_TOUCHSCREEN', Or((Literal('0'), Literal('1')))),
|
||||
+ ('ID_INPUT_TRACKBALL', Or((Literal('0'), Literal('1')))),
|
||||
+ ('MOUSE_WHEEL_TILT_HORIZONTAL', Or((Literal('0'), Literal('1')))),
|
||||
+ ('MOUSE_WHEEL_TILT_VERTICAL', Or((Literal('0'), Literal('1')))),
|
||||
('POINTINGSTICK_SENSITIVITY', INTEGER),
|
||||
('POINTINGSTICK_CONST_ACCEL', REAL),
|
||||
('ID_INPUT_JOYSTICK_INTEGRATION', Or(('internal', 'external'))),
|
||||
@ -0,0 +1,28 @@
|
||||
From 6c95b29117469a5ecb22655fb561dceee04106e8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Fri, 17 Jul 2020 07:44:10 +0200
|
||||
Subject: [PATCH] hwdb: allow spaces in usb: matches and similar patterns
|
||||
|
||||
In the past we didn't have any matches like that, so the parser was stricter
|
||||
than necessary, but now we have, so allow that.
|
||||
|
||||
(cherry picked from commit 457763aa0393a9f11e30071bb3794caf1a4f2f64)
|
||||
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index d15ae0470c..db26a5e4d4 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -89,7 +89,7 @@ def hwdb_grammar():
|
||||
for category, conn in TYPES.items())
|
||||
|
||||
matchline_typed = Combine(prefix + Word(printables + ' ' + '®'))
|
||||
- matchline_general = Combine(Or(GENERAL_MATCHES) + ':' + Word(printables))
|
||||
+ matchline_general = Combine(Or(GENERAL_MATCHES) + ':' + Word(printables + ' ' + '®'))
|
||||
matchline = (matchline_typed | matchline_general) + EOL
|
||||
|
||||
propertyline = (White(' ', exact=1).suppress() +
|
||||
@ -0,0 +1,83 @@
|
||||
From aa5ed0d813964222dfe337c0733d4586d7a4f647 Mon Sep 17 00:00:00 2001
|
||||
From: Frantisek Sumsal <fsumsal@redhat.com>
|
||||
Date: Tue, 25 Nov 2025 17:56:16 +0100
|
||||
Subject: [PATCH] test: fix parsing of 60-seat.hwdb and 60-keyboard.hwdb
|
||||
|
||||
This includes changes for hwdb/parse_hwdb.py from commits:
|
||||
- c0b2e69f8815881d51b68b4f73e6c7f8cc2417a1
|
||||
- d7d31692bf7cde5dce7f4ed3cae429a5b302a9f0
|
||||
- a136c2cdd84c93c2fa5e1cedb20f5acac80df5be
|
||||
- and possibly others
|
||||
|
||||
The hwdb changes from these commits were backported as part of
|
||||
793dc4d9e32baba27eac1f37283a7485b0889803.
|
||||
|
||||
rhel-only
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 14 +++++++++-----
|
||||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index db26a5e4d4..956b206b00 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -34,7 +34,7 @@ try:
|
||||
LineStart, LineEnd,
|
||||
OneOrMore, Combine, Or, Optional, Suppress, Group,
|
||||
nums, alphanums, printables,
|
||||
- stringEnd, pythonStyleComment, QuotedString,
|
||||
+ stringEnd, pythonStyleComment,
|
||||
ParseBaseException)
|
||||
except ImportError:
|
||||
print('pyparsing is not available')
|
||||
@@ -56,13 +56,13 @@ EOL = LineEnd().suppress()
|
||||
EMPTYLINE = LineEnd()
|
||||
COMMENTLINE = pythonStyleComment + EOL
|
||||
INTEGER = Word(nums)
|
||||
-STRING = QuotedString('"')
|
||||
REAL = Combine((INTEGER + Optional('.' + Optional(INTEGER))) ^ ('.' + INTEGER))
|
||||
SIGNED_REAL = Combine(Optional(Word('-+')) + REAL)
|
||||
UDEV_TAG = Word(string.ascii_uppercase, alphanums + '_')
|
||||
|
||||
TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'),
|
||||
'evdev': ('name', 'atkbd', 'input'),
|
||||
+ 'fb': ('pci'),
|
||||
'id-input': ('modalias'),
|
||||
'touchpad': ('i8042', 'rmi', 'bluetooth', 'usb'),
|
||||
'joystick': ('i8042', 'rmi', 'bluetooth', 'usb'),
|
||||
@@ -93,7 +93,8 @@ def hwdb_grammar():
|
||||
matchline = (matchline_typed | matchline_general) + EOL
|
||||
|
||||
propertyline = (White(' ', exact=1).suppress() +
|
||||
- Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.!-;, "') - Optional(pythonStyleComment)) +
|
||||
+ Combine(UDEV_TAG - '=' - Optional(Word(alphanums + '_=:@*.!-;, "'))
|
||||
+ - Optional(pythonStyleComment)) +
|
||||
EOL)
|
||||
propertycomment = White(' ', exact=1) + pythonStyleComment + EOL
|
||||
|
||||
@@ -113,6 +114,7 @@ def property_grammar():
|
||||
dpi_setting = (Optional('*')('DEFAULT') + INTEGER('DPI') + Suppress('@') + INTEGER('HZ'))('SETTINGS*')
|
||||
mount_matrix_row = SIGNED_REAL + ',' + SIGNED_REAL + ',' + SIGNED_REAL
|
||||
mount_matrix = (mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX')
|
||||
+ xkb_setting = Optional(Word(alphanums + '+-/@._'))
|
||||
|
||||
props = (('MOUSE_DPI', Group(OneOrMore(dpi_setting))),
|
||||
('MOUSE_WHEEL_CLICK_ANGLE', INTEGER),
|
||||
@@ -139,12 +141,14 @@ def property_grammar():
|
||||
('POINTINGSTICK_CONST_ACCEL', REAL),
|
||||
('ID_INPUT_JOYSTICK_INTEGRATION', Or(('internal', 'external'))),
|
||||
('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))),
|
||||
- ('XKB_FIXED_LAYOUT', STRING),
|
||||
- ('XKB_FIXED_VARIANT', STRING),
|
||||
+ ('XKB_FIXED_LAYOUT', xkb_setting),
|
||||
+ ('XKB_FIXED_VARIANT', xkb_setting),
|
||||
+ ('XKB_FIXED_MODEL', xkb_setting),
|
||||
('KEYBOARD_LED_NUMLOCK', Literal('0')),
|
||||
('KEYBOARD_LED_CAPSLOCK', Literal('0')),
|
||||
('ACCEL_MOUNT_MATRIX', mount_matrix),
|
||||
('ACCEL_LOCATION', Or(('display', 'base'))),
|
||||
+ ('ID_TAG_MASTER_OF_SEAT', Literal('1')),
|
||||
)
|
||||
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
|
||||
for name, val in props]
|
||||
@ -0,0 +1,54 @@
|
||||
From c85ce044e87038724cc1095d86ebd15b2da4564f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Tue, 8 Oct 2019 14:44:35 +0200
|
||||
Subject: [PATCH] parse_hwdb: fix compatibility with pyparsing 2.4.*
|
||||
|
||||
pyparsing 2.3.1/2.4.0 had some changes to grouping of And matches, and as a
|
||||
result we'd report 0 properties and 0 matches, and not really do any checks.
|
||||
|
||||
With this change we get identical behaviour for pyparsing 2.3.1, 2.4.0, 2.4.2:
|
||||
|
||||
$ hwdb/parse_hwdb.py
|
||||
hwdb/60-evdev.hwdb: 72 match groups, 94 matches, 262 properties
|
||||
hwdb/60-input-id.hwdb: 3 match groups, 3 matches, 4 properties
|
||||
hwdb/60-keyboard.hwdb: 173 match groups, 256 matches, 872 properties
|
||||
Keycode KBD_LCD_MENU1 unknown
|
||||
Keycode KBD_LCD_MENU4 unknown
|
||||
Keycode KBD_LCD_MENU2 unknown
|
||||
Keycode KBD_LCD_MENU3 unknown
|
||||
hwdb/60-sensor.hwdb: 101 match groups, 120 matches, 105 properties
|
||||
hwdb/70-joystick.hwdb: 2 match groups, 3 matches, 2 properties
|
||||
hwdb/70-mouse.hwdb: 104 match groups, 119 matches, 123 properties
|
||||
hwdb/70-pointingstick.hwdb: 8 match groups, 30 matches, 11 properties
|
||||
hwdb/70-touchpad.hwdb: 6 match groups, 9 matches, 6 properties
|
||||
|
||||
(cherry picked from commit 2382a2e32b6076fa4603c958f84b46d5a5b13dfa)
|
||||
|
||||
Related: RHEL-130979
|
||||
---
|
||||
hwdb/parse_hwdb.py | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hwdb/parse_hwdb.py b/hwdb/parse_hwdb.py
|
||||
index 956b206b00..8118ad4e3a 100755
|
||||
--- a/hwdb/parse_hwdb.py
|
||||
+++ b/hwdb/parse_hwdb.py
|
||||
@@ -103,7 +103,7 @@ def hwdb_grammar():
|
||||
(EMPTYLINE ^ stringEnd()).suppress())
|
||||
commentgroup = OneOrMore(COMMENTLINE).suppress() - EMPTYLINE.suppress()
|
||||
|
||||
- grammar = OneOrMore(group('GROUPS*') ^ commentgroup) + stringEnd()
|
||||
+ grammar = OneOrMore(Group(group)('GROUPS*') ^ commentgroup) + stringEnd()
|
||||
|
||||
return grammar
|
||||
|
||||
@@ -243,7 +243,8 @@ def check_properties(groups):
|
||||
elif parsed.NAME == 'ACCEL_MOUNT_MATRIX':
|
||||
check_one_mount_matrix(prop, parsed.VALUE)
|
||||
elif parsed.NAME.startswith('KEYBOARD_KEY_'):
|
||||
- check_one_keycode(prop, parsed.VALUE)
|
||||
+ val = parsed.VALUE if isinstance(parsed.VALUE, str) else parsed.VALUE[0]
|
||||
+ check_one_keycode(prop, val)
|
||||
|
||||
def print_summary(fname, groups):
|
||||
print('{}: {} match groups, {} matches, {} properties'
|
||||
@ -0,0 +1,109 @@
|
||||
From 3d7dd494cd2c6cfe51f76de4fd0c8d2c6a80f0e4 Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Mon, 9 Jul 2018 14:05:20 +0900
|
||||
Subject: [PATCH] login: use parse_uid() when unmounting user runtime directory
|
||||
|
||||
When unmounting user runtime directory, only UID is necessary,
|
||||
and the corresponding user may not exist anymore.
|
||||
This makes first try to parse the input by parse_uid(), and only if it
|
||||
fails, prase the input by get_user_creds().
|
||||
|
||||
Fixes #9541.
|
||||
|
||||
(cherry picked from commit 86d18f3b09ec984ef3732567af992adb2dc77a8a)
|
||||
|
||||
Resolves: RHEL-132175
|
||||
---
|
||||
src/login/user-runtime-dir.c | 57 +++++++++++++++++++++++-------------
|
||||
1 file changed, 36 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c
|
||||
index 9693821990..51b864c9f8 100644
|
||||
--- a/src/login/user-runtime-dir.c
|
||||
+++ b/src/login/user-runtime-dir.c
|
||||
@@ -110,8 +110,22 @@ static int user_remove_runtime_path(const char *runtime_path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int do_mount(const char *runtime_path, uid_t uid, gid_t gid) {
|
||||
+static int do_mount(const char *user) {
|
||||
+ char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
|
||||
size_t runtime_dir_size;
|
||||
+ uid_t uid;
|
||||
+ gid_t gid;
|
||||
+ int r;
|
||||
+
|
||||
+ r = get_user_creds(&user, &uid, &gid, NULL, NULL);
|
||||
+ if (r < 0)
|
||||
+ return log_error_errno(r,
|
||||
+ r == -ESRCH ? "No such user \"%s\"" :
|
||||
+ r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
|
||||
+ : "Failed to look up user \"%s\": %m",
|
||||
+ user);
|
||||
+
|
||||
+ xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
|
||||
|
||||
assert_se(gather_configuration(&runtime_dir_size) == 0);
|
||||
|
||||
@@ -119,16 +133,30 @@ static int do_mount(const char *runtime_path, uid_t uid, gid_t gid) {
|
||||
return user_mkdir_runtime_path(runtime_path, uid, gid, runtime_dir_size);
|
||||
}
|
||||
|
||||
-static int do_umount(const char *runtime_path) {
|
||||
+static int do_umount(const char *user) {
|
||||
+ char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
|
||||
+ uid_t uid;
|
||||
+ int r;
|
||||
+
|
||||
+ /* The user may be already removed. So, first try to parse the string by parse_uid(),
|
||||
+ * and if it fails, fallback to get_user_creds().*/
|
||||
+ if (parse_uid(user, &uid) < 0) {
|
||||
+ r = get_user_creds(&user, &uid, NULL, NULL, NULL);
|
||||
+ if (r < 0)
|
||||
+ return log_error_errno(r,
|
||||
+ r == -ESRCH ? "No such user \"%s\"" :
|
||||
+ r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
|
||||
+ : "Failed to look up user \"%s\": %m",
|
||||
+ user);
|
||||
+ }
|
||||
+
|
||||
+ xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
|
||||
+
|
||||
log_debug("Will remove %s", runtime_path);
|
||||
return user_remove_runtime_path(runtime_path);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
- const char *user;
|
||||
- uid_t uid;
|
||||
- gid_t gid;
|
||||
- char runtime_path[sizeof("/run/user") + DECIMAL_STR_MAX(uid_t)];
|
||||
int r;
|
||||
|
||||
log_parse_environment();
|
||||
@@ -145,23 +173,10 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
umask(0022);
|
||||
|
||||
- user = argv[2];
|
||||
- r = get_user_creds(&user, &uid, &gid, NULL, NULL);
|
||||
- if (r < 0) {
|
||||
- log_error_errno(r,
|
||||
- r == -ESRCH ? "No such user \"%s\"" :
|
||||
- r == -ENOMSG ? "UID \"%s\" is invalid or has an invalid main group"
|
||||
- : "Failed to look up user \"%s\": %m",
|
||||
- user);
|
||||
- return EXIT_FAILURE;
|
||||
- }
|
||||
-
|
||||
- xsprintf(runtime_path, "/run/user/" UID_FMT, uid);
|
||||
-
|
||||
if (streq(argv[1], "start"))
|
||||
- r = do_mount(runtime_path, uid, gid);
|
||||
+ r = do_mount(argv[2]);
|
||||
else if (streq(argv[1], "stop"))
|
||||
- r = do_umount(runtime_path);
|
||||
+ r = do_umount(argv[2]);
|
||||
else
|
||||
assert_not_reached("Unknown verb!");
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
From 2b0d33678cbd86d87691d044a5c11aa981a2316e Mon Sep 17 00:00:00 2001
|
||||
From: Lincoln Ramsay <a1291762@gmail.com>
|
||||
Date: Wed, 24 Mar 2021 17:37:25 +1000
|
||||
Subject: [PATCH] pid1: do not use generated strings as format strings (#19098)
|
||||
|
||||
The generated string may include %, which will confuse both the
|
||||
xprintf call, and the VA_FORMAT_ADVANCE macro.
|
||||
|
||||
Pass the generated string as an argument to a "%s" format string
|
||||
instead.
|
||||
|
||||
(cherry picked from commit 7325a2b2d15af09a9389723d6153050130c0bd36)
|
||||
|
||||
Resolves: RHEL-132317
|
||||
---
|
||||
src/core/transaction.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index 8196aba927..4d6cb01fa4 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -395,7 +395,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
j->unit->id,
|
||||
unit_id == array ? "ordering cycle" : "dependency",
|
||||
*unit_id, *job_type,
|
||||
- unit_ids);
|
||||
+ "%s", unit_ids);
|
||||
|
||||
if (delete) {
|
||||
const char *status;
|
||||
@@ -404,7 +404,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
"MESSAGE=%s: Job %s/%s deleted to break ordering cycle starting with %s/%s",
|
||||
j->unit->id, delete->unit->id, job_type_to_string(delete->type),
|
||||
j->unit->id, job_type_to_string(j->type),
|
||||
- unit_ids);
|
||||
+ "%s", unit_ids);
|
||||
|
||||
if (log_get_show_color())
|
||||
status = ANSI_HIGHLIGHT_RED " SKIP " ANSI_NORMAL;
|
||||
@@ -420,7 +420,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
log_struct(LOG_ERR,
|
||||
"MESSAGE=%s: Unable to break cycle starting with %s/%s",
|
||||
j->unit->id, j->unit->id, job_type_to_string(j->type),
|
||||
- unit_ids);
|
||||
+ "%s", unit_ids);
|
||||
|
||||
return sd_bus_error_setf(e, BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC,
|
||||
"Transaction order is cyclic. See system logs for details.");
|
||||
@ -0,0 +1,57 @@
|
||||
From 1f6175b1b397293fe363f2c192dd2f994cbfe43d Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Sat, 18 Mar 2023 12:12:01 +0900
|
||||
Subject: [PATCH] core/transaction: make merge_unit_ids() always return
|
||||
NUL-terminated string
|
||||
|
||||
Follow-up for 924775e8ce49817f96df19c2b06356c12ecfc754.
|
||||
|
||||
The loop run with `STRV_FOREACH_PAIR()`, hence `if (*(unit_id+1))` is
|
||||
not a good way to detect if there exist a next entry.
|
||||
|
||||
Fixes #26872.
|
||||
|
||||
(cherry picked from commit 366eced4c81a15a25b9225347fa203aa67798b02)
|
||||
|
||||
Resolves: RHEL-132317
|
||||
---
|
||||
src/core/transaction.c | 16 ++++++++++------
|
||||
1 file changed, 10 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index 4d6cb01fa4..89cc1d0a4c 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -322,22 +322,26 @@ _pure_ static bool unit_matters_to_anchor(Unit *u, Job *j) {
|
||||
}
|
||||
|
||||
static char* merge_unit_ids(const char* unit_log_field, char **pairs) {
|
||||
- char **unit_id, **job_type, *ans = NULL;
|
||||
- size_t alloc = 0, size = 0, next;
|
||||
+ _cleanup_free_ char *ans = NULL;
|
||||
+ char **unit_id, **job_type;
|
||||
+ size_t alloc = 0, size = 0;
|
||||
|
||||
STRV_FOREACH_PAIR(unit_id, job_type, pairs) {
|
||||
+ size_t next;
|
||||
+
|
||||
+ if (size > 0)
|
||||
+ ans[size - 1] = '\n';
|
||||
+
|
||||
next = strlen(unit_log_field) + strlen(*unit_id);
|
||||
if (!GREEDY_REALLOC(ans, alloc, size + next + 1)) {
|
||||
- return mfree(ans);
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
sprintf(ans + size, "%s%s", unit_log_field, *unit_id);
|
||||
- if (*(unit_id+1))
|
||||
- ans[size + next] = '\n';
|
||||
size += next + 1;
|
||||
}
|
||||
|
||||
- return ans;
|
||||
+ return TAKE_PTR(ans);
|
||||
}
|
||||
|
||||
static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsigned generation, sd_bus_error *e) {
|
||||
@ -0,0 +1,27 @@
|
||||
From dc0b680699ec67ace0825724087487c3f5f82886 Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Sat, 18 Mar 2023 12:17:54 +0900
|
||||
Subject: [PATCH] core/transaction: make merge_unit_ids() return non-NULL on
|
||||
success
|
||||
|
||||
(cherry picked from commit 999f16514367224cbc50cb3ccc1e4392e43f6811)
|
||||
|
||||
Related: RHEL-132317
|
||||
---
|
||||
src/core/transaction.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index 89cc1d0a4c..cd80e7e111 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -341,6 +341,9 @@ static char* merge_unit_ids(const char* unit_log_field, char **pairs) {
|
||||
size += next + 1;
|
||||
}
|
||||
|
||||
+ if (!ans)
|
||||
+ return strdup("");
|
||||
+
|
||||
return TAKE_PTR(ans);
|
||||
}
|
||||
|
||||
53
SOURCES/1061-core-transaction-do-not-log-null.patch
Normal file
53
SOURCES/1061-core-transaction-do-not-log-null.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 231be769332d2b699b9add3f8add7b8941c3a7aa Mon Sep 17 00:00:00 2001
|
||||
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
||||
Date: Sat, 18 Mar 2023 12:15:10 +0900
|
||||
Subject: [PATCH] core/transaction: do not log "(null)"
|
||||
|
||||
As we ignores the failure in merge_unit_ids(), so unit_ids may be NULL.
|
||||
|
||||
(cherry picked from commit 5803c24da5cf543a55c4fce9009a9c5f2b18519a)
|
||||
|
||||
Related: RHEL-132317
|
||||
---
|
||||
src/core/transaction.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/core/transaction.c b/src/core/transaction.c
|
||||
index cd80e7e111..159c10c7c8 100644
|
||||
--- a/src/core/transaction.c
|
||||
+++ b/src/core/transaction.c
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "alloc-util.h"
|
||||
#include "bus-common-errors.h"
|
||||
#include "bus-error.h"
|
||||
+#include "string-util.h"
|
||||
#include "terminal-util.h"
|
||||
#include "transaction.h"
|
||||
#include "dbus-unit.h"
|
||||
@@ -402,7 +403,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
j->unit->id,
|
||||
unit_id == array ? "ordering cycle" : "dependency",
|
||||
*unit_id, *job_type,
|
||||
- "%s", unit_ids);
|
||||
+ "%s", strna(unit_ids));
|
||||
|
||||
if (delete) {
|
||||
const char *status;
|
||||
@@ -411,7 +412,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
"MESSAGE=%s: Job %s/%s deleted to break ordering cycle starting with %s/%s",
|
||||
j->unit->id, delete->unit->id, job_type_to_string(delete->type),
|
||||
j->unit->id, job_type_to_string(j->type),
|
||||
- "%s", unit_ids);
|
||||
+ "%s", strna(unit_ids));
|
||||
|
||||
if (log_get_show_color())
|
||||
status = ANSI_HIGHLIGHT_RED " SKIP " ANSI_NORMAL;
|
||||
@@ -427,7 +428,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
log_struct(LOG_ERR,
|
||||
"MESSAGE=%s: Unable to break cycle starting with %s/%s",
|
||||
j->unit->id, j->unit->id, job_type_to_string(j->type),
|
||||
- "%s", unit_ids);
|
||||
+ "%s", strna(unit_ids));
|
||||
|
||||
return sd_bus_error_setf(e, BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC,
|
||||
"Transaction order is cyclic. See system logs for details.");
|
||||
@ -0,0 +1,47 @@
|
||||
From b3d8c010014f19b8c563d3e13819620d2d068332 Mon Sep 17 00:00:00 2001
|
||||
From: Anita Zhang <the.anitazha@gmail.com>
|
||||
Date: Thu, 13 May 2021 01:17:51 -0700
|
||||
Subject: [PATCH] run: update checks to allow running with a user's bus
|
||||
|
||||
systemd-run is documented to as being able to connect and run on a
|
||||
specific user bus with "--user --machine=lennart@.host" arguments.
|
||||
This PR updates some logic that prevented this from working.
|
||||
|
||||
(cherry picked from commit cbdc29492097e24ef3320280bc2a8dedbce02d9a)
|
||||
|
||||
Resolves: RHEL-118835
|
||||
---
|
||||
src/run/run.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/run/run.c b/src/run/run.c
|
||||
index 9ad44e7b57..b1d2d6fa4a 100644
|
||||
--- a/src/run/run.c
|
||||
+++ b/src/run/run.c
|
||||
@@ -415,13 +415,13 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (arg_user && arg_transport != BUS_TRANSPORT_LOCAL) {
|
||||
- log_error("Execution in user context is not supported on non-local systems.");
|
||||
+ if (arg_user && arg_transport == BUS_TRANSPORT_REMOTE) {
|
||||
+ log_error("Execution in user context is not supported on remote systems.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (arg_scope && arg_transport != BUS_TRANSPORT_LOCAL) {
|
||||
- log_error("Scope execution is not supported on non-local systems.");
|
||||
+ if (arg_scope && arg_transport == BUS_TRANSPORT_REMOTE) {
|
||||
+ log_error("Scope execution is not supported on remote systems.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1495,7 +1495,7 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
/* If --wait is used connect via the bus, unconditionally, as ref/unref is not supported via the limited direct
|
||||
* connection */
|
||||
- if (arg_wait || arg_stdio != ARG_STDIO_NONE)
|
||||
+ if (arg_wait || arg_stdio != ARG_STDIO_NONE || (arg_user && arg_transport != BUS_TRANSPORT_LOCAL))
|
||||
r = bus_connect_transport(arg_transport, arg_host, arg_user, &bus);
|
||||
else
|
||||
r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus);
|
||||
@ -0,0 +1,44 @@
|
||||
From c3767a4460b41af817e01160e4bc201871f3bedd Mon Sep 17 00:00:00 2001
|
||||
From: Jan Macku <jamacku@redhat.com>
|
||||
Date: Thu, 4 Dec 2025 15:18:22 +0100
|
||||
Subject: [PATCH] Revert "run: update checks to allow running with a user's
|
||||
bus"
|
||||
|
||||
This reverts commit b3d8c010014f19b8c563d3e13819620d2d068332.
|
||||
|
||||
Related: RHEL-118835
|
||||
---
|
||||
src/run/run.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/run/run.c b/src/run/run.c
|
||||
index b1d2d6fa4a..9ad44e7b57 100644
|
||||
--- a/src/run/run.c
|
||||
+++ b/src/run/run.c
|
||||
@@ -415,13 +415,13 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (arg_user && arg_transport == BUS_TRANSPORT_REMOTE) {
|
||||
- log_error("Execution in user context is not supported on remote systems.");
|
||||
+ if (arg_user && arg_transport != BUS_TRANSPORT_LOCAL) {
|
||||
+ log_error("Execution in user context is not supported on non-local systems.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (arg_scope && arg_transport == BUS_TRANSPORT_REMOTE) {
|
||||
- log_error("Scope execution is not supported on remote systems.");
|
||||
+ if (arg_scope && arg_transport != BUS_TRANSPORT_LOCAL) {
|
||||
+ log_error("Scope execution is not supported on non-local systems.");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1495,7 +1495,7 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
/* If --wait is used connect via the bus, unconditionally, as ref/unref is not supported via the limited direct
|
||||
* connection */
|
||||
- if (arg_wait || arg_stdio != ARG_STDIO_NONE || (arg_user && arg_transport != BUS_TRANSPORT_LOCAL))
|
||||
+ if (arg_wait || arg_stdio != ARG_STDIO_NONE)
|
||||
r = bus_connect_transport(arg_transport, arg_host, arg_user, &bus);
|
||||
else
|
||||
r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus);
|
||||
@ -0,0 +1,74 @@
|
||||
From ed784c6dccf4e7b7d4628e02cf28b0d5725bab34 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 8 May 2022 17:21:09 +0200
|
||||
Subject: [PATCH] logind: fix crash in logind on user-specified message string
|
||||
|
||||
This is trivially exploitable (in the sense of causing a crash from SEGV) e.g.
|
||||
by 'shutdown now "Message %s %s %n"'. The message is settable through polkit,
|
||||
but is limited to auth_admin:
|
||||
|
||||
<action id="org.freedesktop.login1.set-wall-message">
|
||||
<description gettext-domain="systemd">Set a wall message</description>
|
||||
<message gettext-domain="systemd">Authentication is required to set a wall message</message>
|
||||
<defaults>
|
||||
<allow_any>auth_admin_keep</allow_any>
|
||||
<allow_inactive>auth_admin_keep</allow_inactive>
|
||||
<allow_active>auth_admin_keep</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
Bug introduced in 9ef15026c0e7e6600372056c43442c99ec53746e
|
||||
('logind/systemctl: introduce SetWallMessage and --message', 2015-09-15).
|
||||
|
||||
(cherry picked from commit 0cb09bcb825ab86ba4ca70be4e6322eaf9baee95)
|
||||
|
||||
Related: RHEL-132317
|
||||
---
|
||||
src/login/logind-dbus.c | 21 ++++++++++-----------
|
||||
1 file changed, 10 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
|
||||
index 61fd47999d..ffa6af8d49 100644
|
||||
--- a/src/login/logind-dbus.c
|
||||
+++ b/src/login/logind-dbus.c
|
||||
@@ -1414,30 +1414,29 @@ static int bus_manager_log_shutdown(
|
||||
assert(unit_name);
|
||||
|
||||
if (streq(unit_name, SPECIAL_POWEROFF_TARGET)) {
|
||||
- p = "MESSAGE=System is powering down";
|
||||
+ p = "System is powering down";
|
||||
q = "SHUTDOWN=power-off";
|
||||
} else if (streq(unit_name, SPECIAL_REBOOT_TARGET)) {
|
||||
- p = "MESSAGE=System is rebooting";
|
||||
+ p = "System is rebooting";
|
||||
q = "SHUTDOWN=reboot";
|
||||
} else if (streq(unit_name, SPECIAL_HALT_TARGET)) {
|
||||
- p = "MESSAGE=System is halting";
|
||||
+ p = "System is halting";
|
||||
q = "SHUTDOWN=halt";
|
||||
} else if (streq(unit_name, SPECIAL_KEXEC_TARGET)) {
|
||||
- p = "MESSAGE=System is rebooting with kexec";
|
||||
+ p = "System is rebooting with kexec";
|
||||
q = "SHUTDOWN=kexec";
|
||||
} else {
|
||||
- p = "MESSAGE=System is shutting down";
|
||||
+ p = "System is shutting down";
|
||||
q = NULL;
|
||||
}
|
||||
|
||||
- if (isempty(m->wall_message))
|
||||
- p = strjoina(p, ".");
|
||||
- else
|
||||
- p = strjoina(p, " (", m->wall_message, ").");
|
||||
-
|
||||
return log_struct(LOG_NOTICE,
|
||||
"MESSAGE_ID=" SD_MESSAGE_SHUTDOWN_STR,
|
||||
- p,
|
||||
+ LOG_MESSAGE("%s%s%s%s.",
|
||||
+ p,
|
||||
+ m->wall_message ? " (" : "",
|
||||
+ strempty(m->wall_message),
|
||||
+ m->wall_message ? ")" : ""),
|
||||
q);
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
Name: systemd
|
||||
Url: http://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 239
|
||||
Release: 82%{?dist}.8
|
||||
Release: 82%{?dist}.13
|
||||
# For a breakdown of the licensing, see README
|
||||
License: LGPLv2+ and MIT and GPLv2+
|
||||
Summary: System and Service Manager
|
||||
@ -1097,6 +1097,23 @@ Patch1044: 1044-test-restarting-elapsed-timer-shouldn-t-trigger-the-.patch
|
||||
Patch1045: 1045-test-check-the-next-elapse-timer-timestamp-after-des.patch
|
||||
Patch1046: 1046-timer-don-t-run-service-immediately-after-restart-of.patch
|
||||
Patch1047: 1047-Revert-test-extend-testcase-to-ensure-controller-mem.patch
|
||||
Patch1048: 1048-cryptsetup-generator-refactor-add_crypttab_devices.patch
|
||||
Patch1049: 1049-cryptsetup-generator-continue-parsing-after-error.patch
|
||||
Patch1050: 1050-hwdb-add-ACCEL_LOCATION-property-to-parse_hwdb.py.patch
|
||||
Patch1051: 1051-hwdb-update-ACCEL_LOCATION-property-to-use-Or-instea.patch
|
||||
Patch1052: 1052-test-support-general-properties-in-hwdb-files.patch
|
||||
Patch1053: 1053-hwdb-Relax-parsing-script-to-allow-0-and-1-for-all-I.patch
|
||||
Patch1054: 1054-hwdb-allow-spaces-in-usb-matches-and-similar-pattern.patch
|
||||
Patch1055: 1055-test-fix-parsing-of-60-seat.hwdb-and-60-keyboard.hwd.patch
|
||||
Patch1056: 1056-parse_hwdb-fix-compatibility-with-pyparsing-2.4.patch
|
||||
Patch1057: 1057-login-use-parse_uid-when-unmounting-user-runtime-dir.patch
|
||||
Patch1058: 1058-pid1-do-not-use-generated-strings-as-format-strings-.patch
|
||||
Patch1059: 1059-core-transaction-make-merge_unit_ids-always-return-N.patch
|
||||
Patch1060: 1060-core-transaction-make-merge_unit_ids-return-non-NULL.patch
|
||||
Patch1061: 1061-core-transaction-do-not-log-null.patch
|
||||
Patch1062: 1062-run-update-checks-to-allow-running-with-a-user-s-bus.patch
|
||||
Patch1063: 1063-Revert-run-update-checks-to-allow-running-with-a-use.patch
|
||||
Patch1064: 1064-logind-fix-crash-in-logind-on-user-specified-message.patch
|
||||
|
||||
%ifarch %{ix86} x86_64 aarch64
|
||||
%global have_gnu_efi 1
|
||||
@ -1723,6 +1740,33 @@ fi
|
||||
%files tests -f .file-list-tests
|
||||
|
||||
%changelog
|
||||
* Mon Dec 08 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.13
|
||||
- logind: fix crash in logind on user-specified message string (RHEL-132317)
|
||||
|
||||
* Fri Dec 05 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.12
|
||||
- Revert "run: update checks to allow running with a user's bus" (RHEL-118835)
|
||||
|
||||
* Tue Dec 02 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.11
|
||||
- run: update checks to allow running with a user's bus (RHEL-118835)
|
||||
|
||||
* Tue Dec 02 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.10
|
||||
- hwdb: add ACCEL_LOCATION property to parse_hwdb.py (RHEL-130979)
|
||||
- hwdb: update ACCEL_LOCATION property to use Or instead of QuotedString (RHEL-130979)
|
||||
- test: support general properties in hwdb files (RHEL-130979)
|
||||
- hwdb: Relax parsing script to allow 0 and 1 for all ID_* properties (RHEL-130979)
|
||||
- hwdb: allow spaces in usb: matches and similar patterns (RHEL-130979)
|
||||
- test: fix parsing of 60-seat.hwdb and 60-keyboard.hwdb (RHEL-130979)
|
||||
- parse_hwdb: fix compatibility with pyparsing 2.4.* (RHEL-130979)
|
||||
- login: use parse_uid() when unmounting user runtime directory (RHEL-132175)
|
||||
- pid1: do not use generated strings as format strings (#19098) (RHEL-132317)
|
||||
- core/transaction: make merge_unit_ids() always return NUL-terminated string (RHEL-132317)
|
||||
- core/transaction: make merge_unit_ids() return non-NULL on success (RHEL-132317)
|
||||
- core/transaction: do not log "(null)" (RHEL-132317)
|
||||
|
||||
* Wed Nov 05 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.9
|
||||
- cryptsetup-generator: refactor add_crypttab_devices() (RHEL-38859)
|
||||
- cryptsetup-generator: continue parsing after error (RHEL-38859)
|
||||
|
||||
* Thu Oct 02 2025 systemd maintenance team <systemd-maint@redhat.com> - 239-82.8
|
||||
- test-execute: let's ignore the difference between CLD_KILLED and CLD_DUMPED (RHEL-108744)
|
||||
- test-execute: turn off coredump generation in test services (RHEL-108744)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user