ask-password-api: fix error handling on invalid unicode character v247.4
authorKevin Backhouse <securitylab@github.com>
Fri, 12 Mar 2021 17:00:56 +0000 (18:00 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 12 Mar 2021 17:27:47 +0000 (18:27 +0100)
commit069525e84a67375e27429cb490e8d28af78e673a
treeb0d83b792ba04f00d2ecf4b9d428f1936b43c624
parent78a43c33c8847ebbc2d3cf530ebe304924c58b32
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

(cherry picked from commit 37ca78a35cd1b9f13e584ccf3d332413c7875e40)
src/shared/ask-password-api.c