diff --git a/src/locale/test-localed-util.c b/src/locale/test-localed-util.c index 8e41406298a..9bcc8020096 100644 --- a/src/locale/test-localed-util.c +++ b/src/locale/test-localed-util.c @@ -79,6 +79,11 @@ TEST(vconsole_convert_to_x11) { ASSERT_OK(vconsole_convert_to_x11(&vc, x11_context_verify, &xc)); ASSERT_TRUE(x11_context_isempty(&xc)); + log_info("/* test leading-dash keymap */"); + ASSERT_OK(free_and_strdup(&vc.keymap, "-foo")); + ASSERT_ERROR(vconsole_convert_to_x11(&vc, x11_context_verify, &xc), EINVAL); + ASSERT_TRUE(x11_context_isempty(&xc)); + log_info("/* test without variant, new mapping (es:) */"); ASSERT_OK(free_and_strdup(&vc.keymap, "es")); ASSERT_OK(vconsole_convert_to_x11(&vc, x11_context_verify, &xc)); @@ -148,6 +153,11 @@ TEST(x11_convert_to_vconsole) { ASSERT_OK(x11_convert_to_vconsole(&xc, &vc)); ASSERT_TRUE(vc_context_isempty(&vc)); + log_info("/* test leading-comma layout */"); + ASSERT_OK(free_and_strdup(&xc.layout, ",us")); + ASSERT_ERROR(x11_convert_to_vconsole(&xc, &vc), EINVAL); + ASSERT_TRUE(vc_context_isempty(&vc)); + log_info("/* test without variant, new mapping (es:) */"); ASSERT_OK(free_and_strdup(&xc.layout, "es")); ASSERT_OK(x11_convert_to_vconsole(&xc, &vc)); diff --git a/src/shared/vconsole-util.c b/src/shared/vconsole-util.c index 9e56ce823df..a780b273aab 100644 --- a/src/shared/vconsole-util.c +++ b/src/shared/vconsole-util.c @@ -352,9 +352,11 @@ int find_converted_keymap(const X11Context *xc, char **ret) { int r; assert(xc); - assert(!isempty(xc->layout)); assert(ret); + if (isempty(xc->layout)) + return -EINVAL; + if (xc->variant) n = strjoin(xc->layout, "-", xc->variant); else