summaryrefslogtreecommitdiffstats
path: root/bus/config-parser.c
diff options
context:
space:
mode:
authorJohn (J5) Palmieri <johnp@redhat.com>2006-11-02 23:56:48 +0000
committerJohn (J5) Palmieri <johnp@redhat.com>2006-11-02 23:56:48 +0000
commita157ec7f72839473113934fc12581645b421e6d9 (patch)
tree1b06a10ab6016bf5874fc0b682841735f0ec691d /bus/config-parser.c
parent547f1de555c28654e785b701c26fe20564b5805e (diff)
* 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
Diffstat (limited to 'bus/config-parser.c')
-rw-r--r--bus/config-parser.c29
1 files changed, 15 insertions, 14 deletions
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:
{