From a157ec7f72839473113934fc12581645b421e6d9 Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Thu, 2 Nov 2006 23:56:48 +0000 Subject: * bus/config-parser.c (service_dirs_find_dir): use _dbus_list_get_next_link so we don't get stuck in an infinite loop (start_busconfig_child): move processing of standard_session_servicedirs tags here because they have no content (bus_config_parser_content): check we don't have content in standard_session_servicedirs tag * tools/Makefile.am: Make sure the /var/lib/dbus directory is created Packagers need to own this directory --- bus/config-parser.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'bus/config-parser.c') diff --git a/bus/config-parser.c b/bus/config-parser.c index 70bc441d..dbffd3ff 100644 --- a/bus/config-parser.c +++ b/bus/config-parser.c @@ -297,7 +297,7 @@ service_dirs_find_dir (DBusList **service_dirs, _dbus_assert (dir != NULL); - for (link = *service_dirs; link; link = link->next) + for (link = *service_dirs; link; link = _dbus_list_get_next_link(service_dirs, link)) { const char *link_dir; @@ -805,6 +805,10 @@ start_busconfig_child (BusConfigParser *parser, } else if (strcmp (element_name, "standard_session_servicedirs") == 0) { + DBusList *link; + DBusList *dirs; + dirs = NULL; + if (!check_no_attributes (parser, "standard_session_servicedirs", attribute_names, attribute_values, error)) return FALSE; @@ -814,6 +818,15 @@ start_busconfig_child (BusConfigParser *parser, return FALSE; } + if (!_dbus_get_standard_session_servicedirs (&dirs)) + { + BUS_SET_OOM (error); + return FALSE; + } + + while ((link = _dbus_list_pop_first_link (&dirs))) + service_dirs_append_link_unique_or_free (&parser->service_dirs, link); + return TRUE; } else if (strcmp (element_name, "servicedir") == 0) @@ -2191,6 +2204,7 @@ bus_config_parser_content (BusConfigParser *parser, case ELEMENT_ALLOW: case ELEMENT_DENY: case ELEMENT_FORK: + case ELEMENT_STANDARD_SESSION_SERVICEDIRS: case ELEMENT_SELINUX: case ELEMENT_ASSOCIATE: if (all_whitespace (content)) @@ -2352,19 +2366,6 @@ bus_config_parser_content (BusConfigParser *parser, } } break; - case ELEMENT_STANDARD_SESSION_SERVICEDIRS: - { - DBusList *link; - DBusList *dirs; - dirs = NULL; - - if (!_dbus_get_standard_session_servicedirs (&dirs)) - goto nomem; - - while ((link = _dbus_list_pop_first_link (&dirs))) - service_dirs_append_link_unique_or_free (&parser->service_dirs, link); - } - break; case ELEMENT_SERVICEDIR: { -- cgit