Fix dbus-daemon crash due to invalid service file
authorChengwei Yang <chengwei.yang@intel.com>
Thu, 6 Jun 2013 05:25:10 +0000 (13:25 +0800)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 12 Jun 2013 12:42:00 +0000 (13:42 +0100)
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>
bus/desktop-file.c

index ae441c5..bfeb72e 100644 (file)
@@ -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))