From 54dad379f349f17724930e4c81103041defebd5f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 20 Nov 2017 15:30:36 +0100 Subject: [PATCH] keyfile: fix escaping ascii control characters in nm_keyfile_key_encode() Matters when backslash escaping ascii charaters <= 0xF, to produce "\\XX" instead of "\\ X". For example tabulator is "\\09". This also can trigger an nm_assert() failure, when building with --with-more-asserts=5 (or higher). (cherry picked from commit 89c89143b5ace4cff4a6fba9359259a010781284) --- libnm-core/nm-keyfile-utils.c | 2 +- libnm-core/tests/test-keyfile.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libnm-core/nm-keyfile-utils.c b/libnm-core/nm-keyfile-utils.c index 1b7860d873..8858331949 100644 --- a/libnm-core/nm-keyfile-utils.c +++ b/libnm-core/nm-keyfile-utils.c @@ -442,7 +442,7 @@ _keyfile_key_encode (const char *name, && g_ascii_isxdigit (name[i + 2])) || ( ch == ' ' && name[i + 1] == '\0')) - g_string_append_printf (str, "\\%2X", ch); + g_string_append_printf (str, "\\%02X", ch); else g_string_append_c (str, (char) ch); } diff --git a/libnm-core/tests/test-keyfile.c b/libnm-core/tests/test-keyfile.c index 2dc929afd8..313932f0f0 100644 --- a/libnm-core/tests/test-keyfile.c +++ b/libnm-core/tests/test-keyfile.c @@ -99,6 +99,11 @@ test_encode_key (void) do_test_encode_key_bijection (kf, " ", "\\20 \\20"); do_test_encode_key_decode_surjection (kf, "f\\20c", "f c"); do_test_encode_key_decode_surjection (kf, "\\20\\20\\20", "\\20 \\20"); + + do_test_encode_key_bijection (kf, "\t", "\\09"); + do_test_encode_key_bijection (kf, "\t=x", "\\09\\3Dx"); + do_test_encode_key_bijection (kf, "(nm-openvpn-auth-dialog:10283): GdkPixbuf-DEBUG: \tCopy pixels == false", + "(nm-openvpn-auth-dialog:10283): GdkPixbuf-DEBUG: \\09Copy pixels \\3D\\3D false"); } /*****************************************************************************/