summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-12-11 18:21:34 +0100
committerThomas Haller <thaller@redhat.com>2017-12-15 11:48:38 +0100
commitea1f77f91163e86265a1e1a34577ce2db8ca57ea (patch)
treea0c06e4b8a12a71da82462cf95aa440edcaf6ff9
parentc696a226ea5410da48677b47b21256987fe8ecd4 (diff)
downloadNetworkManager-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.c4
-rw-r--r--src/nm-ip4-config.c9
-rw-r--r--src/nm-ip6-config.c9
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);