summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-02-24 23:27:36 +0100
committerThomas Haller <thaller@redhat.com>2015-03-12 18:12:26 +0100
commitf430774ca0f5a4542b5d1faa59240a952c5e19ce (patch)
tree1f852db0c855c9f21f2fd5bd47ad6419b30bbfb9
parent7b6759b76427868723f480fc3516d964df237542 (diff)
downloadNetworkManager-f430774ca0f5a4542b5d1faa59240a952c5e19ce.tar.gz
keyfile: handle invalid integer list in keyfile reader get_bytes()
nm_keyfile_plugin_kf_get_integer_list() should always set @length to zero when returning no integer list. So, this is probably correct. Still, just to be explicit, anticipate and handle a missing @tmp_list.
-rw-r--r--src/settings/plugins/keyfile/reader.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c
index d1ea6e2c27..bb9667b59d 100644
--- a/src/settings/plugins/keyfile/reader.c
+++ b/src/settings/plugins/keyfile/reader.c
@@ -618,6 +618,9 @@ get_bytes (GKeyFile *keyfile,
gsize length;
int i;
+ if (!nm_keyfile_plugin_kf_has_key (keyfile, setting_name, key, NULL))
+ return NULL;
+
/* New format: just a string
* Old format: integer list; e.g. 11;25;38;
*/
@@ -647,6 +650,11 @@ get_bytes (GKeyFile *keyfile,
if (!array) {
/* Old format; list of ints */
tmp_list = nm_keyfile_plugin_kf_get_integer_list (keyfile, setting_name, key, &length, NULL);
+ if (!tmp_list) {
+ nm_log_warn (LOGD_SETTINGS, "%s: %s / %s ignoring invalid binary property",
+ __func__, setting_name, key);
+ return NULL;
+ }
array = g_byte_array_sized_new (length);
for (i = 0; i < length; i++) {
int val = tmp_list[i];