diff options
author | Thomas Haller <thaller@redhat.com> | 2015-02-24 23:27:36 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-03-12 18:12:26 +0100 |
commit | f430774ca0f5a4542b5d1faa59240a952c5e19ce (patch) | |
tree | 1f852db0c855c9f21f2fd5bd47ad6419b30bbfb9 | |
parent | 7b6759b76427868723f480fc3516d964df237542 (diff) | |
download | NetworkManager-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.c | 8 |
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]; |