diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-03-05 19:58:32 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-03-05 20:05:46 +0100 |
commit | d47c78be4a2acbb631a26af11b7ce2ef57f55996 (patch) | |
tree | 024967d8250f9dea111ca82dff3b45a4c0b81573 /src/test | |
parent | 2f2343c6b15ec5495eb5032ae36b937fe36177cc (diff) |
util: properly escape corner cases in bus_path_escape(), too
This follows the suggestions from:
http://lists.freedesktop.org/archives/systemd-devel/2013-March/009363.html
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/test-util.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/test-util.c b/src/test/test-util.c index cb0af4f6a1..789fc089fe 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -261,6 +261,29 @@ static void test_memdup_multiply(void) { free(dup); } +static void test_bus_path_escape_one(const char *a, const char *b) { + _cleanup_free_ char *t = NULL, *x = NULL, *y = NULL; + + assert_se(t = bus_path_escape(a)); + assert_se(streq(t, b)); + + assert_se(x = bus_path_unescape(t)); + assert_se(streq(a, x)); + + assert_se(y = bus_path_unescape(b)); + assert_se(streq(a, y)); +} + +static void test_bus_path_escape(void) { + test_bus_path_escape_one("foo123bar", "foo123bar"); + test_bus_path_escape_one("foo.bar", "foo_2ebar"); + test_bus_path_escape_one("foo_2ebar", "foo_5f2ebar"); + test_bus_path_escape_one("", "_"); + test_bus_path_escape_one("_", "_5f"); + test_bus_path_escape_one("1", "_31"); + test_bus_path_escape_one(":1", "_3a1"); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); @@ -282,6 +305,7 @@ int main(int argc, char *argv[]) { test_foreach_word_quoted(); test_default_term_for_tty(); test_memdup_multiply(); + test_bus_path_escape(); return 0; } |