From 57c2c844f16d9246e40860416ff1415fcd889cf1 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 24 Feb 2015 23:27:36 +0100 Subject: [PATCH] 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. (cherry picked from commit f430774ca0f5a4542b5d1faa59240a952c5e19ce) --- src/settings/plugins/keyfile/reader.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c index 6460ef63e6..8f50b4bf4f 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];