All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] settings: fix segfault if when settings has no group
@ 2019-02-21 18:22 James Prestwood
  2019-02-21 18:22 ` [PATCH 2/2] unit: test-settings: added test with " James Prestwood
  2019-02-21 20:12 ` [PATCH 1/2] settings: fix segfault if when settings has " Denis Kenzior
  0 siblings, 2 replies; 4+ messages in thread
From: James Prestwood @ 2019-02-21 18:22 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 1454 bytes --]

A settings file containing a key/value but no group caused
l_settings_load_from_data to segfault. This was due to both parse_key
and parse_value not checking that the group was non-NULL.

Also, the return of parse_key was being checked against false, when
it actually is returning a unsigned int. This was changed to just
check !parse_key.
---
 ell/settings.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/ell/settings.c b/ell/settings.c
index e3e8303..2153218 100644
--- a/ell/settings.c
+++ b/ell/settings.c
@@ -297,6 +297,9 @@ static unsigned int parse_key(struct l_settings *settings, const char *data,
 	}
 
 	group = l_queue_peek_tail(settings->groups);
+	if (!group)
+		return 0;
+
 	pair = l_new(struct setting_data, 1);
 	pair->key = l_strndup(data, end);
 	l_queue_push_head(group->settings, pair);
@@ -312,6 +315,9 @@ static bool parse_value(struct l_settings *settings, const char *data,
 	struct setting_data *pair;
 
 	group = l_queue_peek_tail(settings->groups);
+	if (!group)
+		return false;
+
 	pair = l_queue_pop_head(group->settings);
 
 	if (!l_utf8_validate(data, len, NULL)) {
@@ -347,7 +353,7 @@ static bool parse_keyvalue(struct l_settings *settings, const char *data,
 		return false;
 	}
 
-	if (parse_key(settings, data, equal - data, line) == false)
+	if (!parse_key(settings, data, equal - data, line))
 		return false;
 
 	equal += 1;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-02-21 20:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-21 18:22 [PATCH 1/2] settings: fix segfault if when settings has no group James Prestwood
2019-02-21 18:22 ` [PATCH 2/2] unit: test-settings: added test with " James Prestwood
2019-02-21 20:10   ` Denis Kenzior
2019-02-21 20:12 ` [PATCH 1/2] settings: fix segfault if when settings has " Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.