summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-02-18 19:15:54 +0100
committerThomas Haller <thaller@redhat.com>2015-02-19 13:07:33 +0100
commitc651b2779346fb65fd0a1ae7effe9bbb99c3e2c6 (patch)
tree71e5bdea690e427a309738b9559fc870a7f0c506
parent148a6656b8da09779d2da2b59e2d6a9c392b5eb1 (diff)
downloadNetworkManager-c651b2779346fb65fd0a1ae7effe9bbb99c3e2c6.tar.gz
keyfile/writer: fix password_raw_writer() to write NMSetting8021x:password-raw
After refactoring libnm-core to use GBytes instead of GByteArray/DBUS_TYPE_G_UCHAR_ARRAY, it was forgotten to update keyfile writer. This causes keyfile writer to skip the NMSetting8021x:password-raw setting and raise a g_critical() warning. Fixes: c43f88907be66f8f62a8edbe76ae2aec4ff61190
-rw-r--r--src/settings/plugins/keyfile/tests/test-keyfile.c17
-rw-r--r--src/settings/plugins/keyfile/writer.c25
2 files changed, 31 insertions, 11 deletions
diff --git a/src/settings/plugins/keyfile/tests/test-keyfile.c b/src/settings/plugins/keyfile/tests/test-keyfile.c
index 28ab20c681..3026593bfa 100644
--- a/src/settings/plugins/keyfile/tests/test-keyfile.c
+++ b/src/settings/plugins/keyfile/tests/test-keyfile.c
@@ -2567,10 +2567,22 @@ test_write_wired_8021x_tls_connection_blob (void)
char *new_priv_key;
const char *uuid;
GError *error = NULL;
+ GBytes *password_raw = NULL;
+#define PASSWORD_RAW "password-raw\0test"
connection = create_wired_tls_connection (NM_SETTING_802_1X_CK_SCHEME_BLOB);
g_assert (connection != NULL);
+ s_8021x = nm_connection_get_setting_802_1x (connection);
+ g_assert (s_8021x);
+
+ password_raw = g_bytes_new (PASSWORD_RAW, STRLEN (PASSWORD_RAW));
+ g_object_set (s_8021x,
+ NM_SETTING_802_1X_PASSWORD_RAW,
+ password_raw,
+ NULL);
+ g_bytes_unref (password_raw);
+
/* Write out the connection */
success = nm_keyfile_plugin_write_test_connection (connection, TEST_SCRATCH_DIR, geteuid (), getegid (), &testfile, &error);
if (!success) {
@@ -2613,6 +2625,11 @@ test_write_wired_8021x_tls_connection_blob (void)
g_assert (nm_setting_802_1x_get_client_cert_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH);
g_assert (nm_setting_802_1x_get_private_key_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH);
+ password_raw = nm_setting_802_1x_get_password_raw (s_8021x);
+ g_assert (password_raw);
+ g_assert (g_bytes_get_size (password_raw) == STRLEN (PASSWORD_RAW));
+ g_assert (!memcmp (g_bytes_get_data (password_raw, NULL), PASSWORD_RAW, STRLEN (PASSWORD_RAW)));
+
unlink (testfile);
g_free (testfile);
diff --git a/src/settings/plugins/keyfile/writer.c b/src/settings/plugins/keyfile/writer.c
index 7f3751faae..26818a50c0 100644
--- a/src/settings/plugins/keyfile/writer.c
+++ b/src/settings/plugins/keyfile/writer.c
@@ -27,7 +27,6 @@
#include <stdio.h>
#include <errno.h>
-#include <dbus/dbus-glib.h>
#include <nm-setting.h>
#include <nm-setting-connection.h>
#include <nm-setting-ip4-config.h>
@@ -42,7 +41,6 @@
#include <string.h>
#include <arpa/inet.h>
-#include "nm-dbus-glib-types.h"
#include "nm-glib-compat.h"
#include "nm-logging.h"
#include "writer.h"
@@ -345,19 +343,24 @@ password_raw_writer (GKeyFile *file,
const GValue *value)
{
const char *setting_name = nm_setting_get_name (setting);
- GByteArray *array;
- int i, *tmp_array;
+ GBytes *array;
+ int *tmp_array;
+ gsize i, len;
+ const char *data;
- g_return_if_fail (G_VALUE_HOLDS (value, DBUS_TYPE_G_UCHAR_ARRAY));
+ g_return_if_fail (G_VALUE_HOLDS (value, G_TYPE_BYTES));
- array = (GByteArray *) g_value_get_boxed (value);
- if (!array || !array->len)
+ array = (GBytes *) g_value_get_boxed (value);
+ if (!array)
+ return;
+ data = g_bytes_get_data (array, &len);
+ if (!data || !len)
return;
- tmp_array = g_new (gint, array->len);
- for (i = 0; i < array->len; i++)
- tmp_array[i] = (int) array->data[i];
- nm_keyfile_plugin_kf_set_integer_list (file, setting_name, key, tmp_array, array->len);
+ tmp_array = g_new (gint, len);
+ for (i = 0; i < len; i++)
+ tmp_array[i] = (int) data[i];
+ nm_keyfile_plugin_kf_set_integer_list (file, setting_name, key, tmp_array, len);
g_free (tmp_array);
}