summaryrefslogtreecommitdiff
path: root/bus/desktop-file.c
diff options
context:
space:
mode:
authorChengwei Yang <chengwei.yang@intel.com>2013-06-06 13:25:10 +0800
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2013-06-06 12:58:56 +0100
commit0a76508672de5c879c14c343f8e6cc041c1843d9 (patch)
tree65c125e4d75e396fe1529a37f6da0ebbf0052116 /bus/desktop-file.c
parentff641bdb2f87188c16c24cee729b210cc827c4c7 (diff)
downloaddbus-0a76508672de5c879c14c343f8e6cc041c1843d9.tar.gz
Fix dbus-daemon crash due to invalid service file
dbus-daemon will crash due to invalid service file which key/value starts before section. In that situation, new_line() will try to access invalid address. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=60853 Signed-off-by: Chengwei Yang <chengwei.yang@intel.com> Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Diffstat (limited to 'bus/desktop-file.c')
-rw-r--r--bus/desktop-file.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/bus/desktop-file.c b/bus/desktop-file.c
index ae441c5e..bfeb72e2 100644
--- a/bus/desktop-file.c
+++ b/bus/desktop-file.c
@@ -688,6 +688,12 @@ bus_desktop_file_load (DBusString *filename,
else if (is_blank_line (&parser) ||
_dbus_string_get_byte (&parser.data, parser.pos) == '#')
parse_comment_or_blank (&parser);
+ else if (parser.current_section < 0)
+ {
+ dbus_set_error(error, DBUS_ERROR_FAILED,
+ "invalid service file: key=value before [Section]");
+ return NULL;
+ }
else
{
if (!parse_key_value (&parser, error))