diff options
| author | Zygmunt Krynicki <zygmunt.krynicki@canonical.com> | 2019-09-05 20:27:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-05 20:27:35 +0200 |
| commit | 58ffab3ea6cb32aa61709455f8defadec5249cc0 (patch) | |
| tree | b6b825b200d6ad49197f168a5e1b860949f901d9 /cmd/libsnap-confine-private | |
| parent | a5806f08cff93d38568a36c88fb9299d3bbc8b9d (diff) | |
| parent | 090df61e44943814f1093b3049b1b8238df43f66 (diff) | |
Merge pull request #7406 from bboozzoo/bboozzoo/s-c-keep-snap-name
cmd/snap-confine: keep track of snap instance name and the snap name
Diffstat (limited to 'cmd/libsnap-confine-private')
| -rw-r--r-- | cmd/libsnap-confine-private/snap-test.c | 29 | ||||
| -rw-r--r-- | cmd/libsnap-confine-private/snap.c | 2 |
2 files changed, 22 insertions, 9 deletions
diff --git a/cmd/libsnap-confine-private/snap-test.c b/cmd/libsnap-confine-private/snap-test.c index e2cc520cc5..1141531319 100644 --- a/cmd/libsnap-confine-private/snap-test.c +++ b/cmd/libsnap-confine-private/snap-test.c @@ -359,7 +359,6 @@ static void test_sc_snap_drop_instance_key_no_dest(void) { if (g_test_subprocess()) { sc_snap_drop_instance_key("foo_bar", NULL, 0); - g_test_fail(); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -373,7 +372,6 @@ static void test_sc_snap_drop_instance_key_short_dest(void) char dest[10] = { 0 }; sc_snap_drop_instance_key("foo-foo-foo-foo-foo_bar", dest, sizeof dest); - g_test_fail(); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -385,7 +383,6 @@ static void test_sc_snap_drop_instance_key_short_dest2(void) if (g_test_subprocess()) { char dest[3] = { 0 }; // "foo" sans the nil byte sc_snap_drop_instance_key("foo", dest, sizeof dest); - g_test_fail(); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -397,7 +394,18 @@ static void test_sc_snap_drop_instance_key_no_name(void) if (g_test_subprocess()) { char dest[10] = { 0 }; sc_snap_drop_instance_key(NULL, dest, sizeof dest); - g_test_fail(); + return; + } + g_test_trap_subprocess(NULL, 0, 0); + g_test_trap_assert_failed(); +} + +static void test_sc_snap_drop_instance_key_short_dest_max(void) +{ + if (g_test_subprocess()) { + char dest[SNAP_NAME_LEN + 1] = { 0 }; + /* 40 chars (max valid length), pretend dest is the same length, no space for terminator */ + sc_snap_drop_instance_key("01234567890123456789012345678901234567890", dest, sizeof dest - 1); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -406,7 +414,7 @@ static void test_sc_snap_drop_instance_key_no_name(void) static void test_sc_snap_drop_instance_key_basic(void) { - char name[41] = { 0xff }; + char name[SNAP_NAME_LEN + 1] = { 0xff }; sc_snap_drop_instance_key("foo_bar", name, sizeof name); g_assert_cmpstr(name, ==, "foo"); @@ -426,6 +434,11 @@ static void test_sc_snap_drop_instance_key_basic(void) memset(name, 0xff, sizeof name); sc_snap_drop_instance_key("foo", name, sizeof name); g_assert_cmpstr(name, ==, "foo"); + + memset(name, 0xff, sizeof name); + /* 40 chars - snap name length */ + sc_snap_drop_instance_key("0123456789012345678901234567890123456789", name, sizeof name); + g_assert_cmpstr(name, ==, "0123456789012345678901234567890123456789"); } static void test_sc_snap_split_instance_name_trailing_nil(void) @@ -434,7 +447,6 @@ static void test_sc_snap_split_instance_name_trailing_nil(void) char dest[3] = { 0 }; // pretend there is no place for trailing \0 sc_snap_split_instance_name("_", NULL, 0, dest, 0); - g_test_fail(); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -447,7 +459,6 @@ static void test_sc_snap_split_instance_name_short_instance_dest(void) char dest[10] = { 0 }; sc_snap_split_instance_name("foo_barbarbarbar", NULL, 0, dest, sizeof dest); - g_test_fail(); return; } g_test_trap_subprocess(NULL, 0, 0); @@ -456,7 +467,7 @@ static void test_sc_snap_split_instance_name_short_instance_dest(void) static void test_sc_snap_split_instance_name_basic(void) { - char name[41] = { 0xff }; + char name[SNAP_NAME_LEN + 1] = { 0xff }; char instance[20] = { 0xff }; sc_snap_split_instance_name("foo_bar", name, sizeof name, instance, @@ -558,6 +569,8 @@ static void __attribute__((constructor)) init(void) test_sc_snap_drop_instance_key_short_dest); g_test_add_func("/snap/sc_snap_drop_instance_key/short_dest2", test_sc_snap_drop_instance_key_short_dest2); + g_test_add_func("/snap/sc_snap_drop_instance_key/short_dest_max", + test_sc_snap_drop_instance_key_short_dest_max); g_test_add_func("/snap/sc_snap_split_instance_name/basic", test_sc_snap_split_instance_name_basic); diff --git a/cmd/libsnap-confine-private/snap.c b/cmd/libsnap-confine-private/snap.c index 8a629f90f7..2affc650b0 100644 --- a/cmd/libsnap-confine-private/snap.c +++ b/cmd/libsnap-confine-private/snap.c @@ -252,7 +252,7 @@ void sc_snap_name_validate(const char *snap_name, sc_error ** errorp) "snap name must be longer than 1 character"); goto out; } - if (n > 40) { + if (n > SNAP_NAME_LEN) { err = sc_error_init(SC_SNAP_DOMAIN, SC_SNAP_INVALID_NAME, "snap name must be shorter than 40 characters"); goto out; |
