mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
ask-password-api: fix error handling on invalid unicode character
The integer overflow happens when utf8_encoded_valid_unichar() returns an error code. The error code is a negative number: -22. This overflows when it is assigned to `z` (type `size_t`). This can cause an infinite loop if the value of `q` is 22 or larger. To reproduce the bug, you need to run `systemd-ask-password` and enter an invalid unicode character, followed by a backspace character. GHSL-2021-052
This commit is contained in:
parent
495787b56c
commit
37ca78a35c
@ -581,10 +581,10 @@ int ask_password_tty(
|
||||
* last one begins */
|
||||
q = 0;
|
||||
for (;;) {
|
||||
size_t z;
|
||||
int z;
|
||||
|
||||
z = utf8_encoded_valid_unichar(passphrase + q, SIZE_MAX);
|
||||
if (z == 0) {
|
||||
if (z <= 0) {
|
||||
q = SIZE_MAX; /* Invalid UTF8! */
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user