diff options
author | Thomas Haller <thaller@redhat.com> | 2017-12-11 18:21:34 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-12-15 11:48:38 +0100 |
commit | ea1f77f91163e86265a1e1a34577ce2db8ca57ea (patch) | |
tree | a0c06e4b8a12a71da82462cf95aa440edcaf6ff9 | |
parent | c696a226ea5410da48677b47b21256987fe8ecd4 (diff) | |
download | NetworkManager-ea1f77f91163e86265a1e1a34577ce2db8ca57ea.tar.gz |
core: don't use variable length arrays
Let's compile with -Wvla, so that G_STATIC_ASSERT() is really
static. But then we cannot use variable length arrays.
-rw-r--r-- | libnm-core/tests/test-general.c | 4 | ||||
-rw-r--r-- | src/nm-ip4-config.c | 9 | ||||
-rw-r--r-- | src/nm-ip6-config.c | 9 |
3 files changed, 13 insertions, 9 deletions
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 88eb4bc85f..da7ea7b1f8 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -6206,7 +6206,9 @@ _test_find_binary_search_do_uint32 (const int *int_array, gsize len) const int OFFSET = 100; const int NEEDLE = 0 + OFFSET; gssize expected_result = -1; - guint32 array[len]; + guint32 array[30]; + + g_assert (len <= G_N_ELEMENTS (array)); /* the test data has negative values. Shift them... */ for (idx = 0; idx < len; idx++) { diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index 1f98ed08c4..33d1f27507 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -2879,9 +2879,9 @@ nm_ip4_config_equal (const NMIP4Config *a, const NMIP4Config *b) { GChecksum *a_checksum = g_checksum_new (G_CHECKSUM_SHA1); GChecksum *b_checksum = g_checksum_new (G_CHECKSUM_SHA1); - gsize a_len = g_checksum_type_get_length (G_CHECKSUM_SHA1); - gsize b_len = g_checksum_type_get_length (G_CHECKSUM_SHA1); - guchar a_data[a_len], b_data[b_len]; + guchar a_data[20], b_data[20]; + gsize a_len = sizeof (a_data); + gsize b_len = sizeof (b_data); gboolean equal; if (a) @@ -2892,7 +2892,8 @@ nm_ip4_config_equal (const NMIP4Config *a, const NMIP4Config *b) g_checksum_get_digest (a_checksum, a_data, &a_len); g_checksum_get_digest (b_checksum, b_data, &b_len); - g_assert (a_len == b_len); + nm_assert (a_len == sizeof (a_data)); + nm_assert (b_len == sizeof (b_data)); equal = !memcmp (a_data, b_data, a_len); g_checksum_free (a_checksum); diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 7c6b0ee604..d2a08d0ceb 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -2477,9 +2477,9 @@ nm_ip6_config_equal (const NMIP6Config *a, const NMIP6Config *b) { GChecksum *a_checksum = g_checksum_new (G_CHECKSUM_SHA1); GChecksum *b_checksum = g_checksum_new (G_CHECKSUM_SHA1); - gsize a_len = g_checksum_type_get_length (G_CHECKSUM_SHA1); - gsize b_len = g_checksum_type_get_length (G_CHECKSUM_SHA1); - guchar a_data[a_len], b_data[b_len]; + guchar a_data[20], b_data[20]; + gsize a_len = sizeof (a_data); + gsize b_len = sizeof (b_data); gboolean equal; if (a) @@ -2490,7 +2490,8 @@ nm_ip6_config_equal (const NMIP6Config *a, const NMIP6Config *b) g_checksum_get_digest (a_checksum, a_data, &a_len); g_checksum_get_digest (b_checksum, b_data, &b_len); - g_assert (a_len == b_len); + nm_assert (a_len == sizeof (a_data)); + nm_assert (b_len == sizeof (b_data)); equal = !memcmp (a_data, b_data, a_len); g_checksum_free (a_checksum); |