summaryrefslogtreecommitdiffstats
path: root/bus/config-parser-trivial.h
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2007-07-24 11:50:59 +0000
committerRichard Hughes <richard@hughsie.com>2007-07-24 11:50:59 +0000
commit21dfdb6349056c2198a30b44eeae681b6213ca55 (patch)
treeca7f7e48462e91ade358a6ba40c9b60d04353e53 /bus/config-parser-trivial.h
parentdd8f96b8af8e079bc0292375cfd5da9625b7b5dd (diff)
2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/config-parser-trivial.c: (service_dirs_find_dir), (service_dirs_append_link_unique_or_free), (bus_config_parser_new), (bus_config_parser_unref), (bus_config_parser_start_element), (bus_config_parser_end_element), (bus_config_parser_content), (bus_config_parser_finished), (bus_config_parser_get_user), (bus_config_parser_get_type), (bus_config_parser_get_service_dirs), (check_return_values), (do_load), (check_loader_oom_func), (process_test_valid_subdir), (make_full_path), (check_file_valid), (bus_config_parser_trivial_test): * bus/config-parser-trivial.h: Add a security sensitive stripped down config parser for the setuid launcher. This file only reads what it needs, and doesn't try to do anything remotely clever like including external files. It is not intended to validate the config file; it is expected that config-parser will do that before the setuid program tries to read it.
Diffstat (limited to 'bus/config-parser-trivial.h')
-rw-r--r--bus/config-parser-trivial.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/bus/config-parser-trivial.h b/bus/config-parser-trivial.h
new file mode 100644
index 00000000..bb760dd5
--- /dev/null
+++ b/bus/config-parser-trivial.h
@@ -0,0 +1,71 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+/* config-parser-trivial.h XML-library-agnostic configuration file parser
+ *
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * Licensed under the Academic Free License version 2.1
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef BUS_CONFIG_PARSER_TRIVIAL_H
+#define BUS_CONFIG_PARSER_TRIVIAL_H
+
+#include <config.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-string.h>
+#include <dbus/dbus-list.h>
+#include <dbus/dbus-hash.h>
+
+/* Whatever XML library we're using just pushes data into this API */
+
+typedef struct BusConfigParser BusConfigParser;
+
+BusConfigParser* bus_config_parser_new (const DBusString *basedir,
+ dbus_bool_t is_toplevel,
+ const BusConfigParser *parent);
+
+BusConfigParser* bus_config_parser_ref (BusConfigParser *parser);
+void bus_config_parser_unref (BusConfigParser *parser);
+dbus_bool_t bus_config_parser_start_element (BusConfigParser *parser,
+ const char *element_name,
+ const char **attribute_names,
+ const char **attribute_values,
+ DBusError *error);
+dbus_bool_t bus_config_parser_end_element (BusConfigParser *parser,
+ const char *element_name,
+ DBusError *error);
+dbus_bool_t bus_config_parser_content (BusConfigParser *parser,
+ const DBusString *content,
+ DBusError *error);
+dbus_bool_t bus_config_parser_finished (BusConfigParser *parser,
+ DBusError *error);
+
+/* Functions for extracting the parse results */
+const char* bus_config_parser_get_user (BusConfigParser *parser);
+const char* bus_config_parser_get_type (BusConfigParser *parser);
+DBusList** bus_config_parser_get_service_dirs (BusConfigParser *parser);
+
+/* Loader functions (backended off one of the XML parsers). Returns a
+ * finished ConfigParser.
+ */
+BusConfigParser* bus_config_load (const DBusString *file,
+ dbus_bool_t is_toplevel,
+ const BusConfigParser *parent,
+ DBusError *error);
+
+#endif /* BUS_CONFIG_PARSER_TRIVIAL_H */