diff --git a/U_add-Cinnamon-desktop-environment_50271fe.patch b/U_add-Cinnamon-desktop-environment_50271fe.patch
new file mode 100644
index 0000000..ebcabd7
--- /dev/null
+++ b/U_add-Cinnamon-desktop-environment_50271fe.patch
@@ -0,0 +1,25 @@
+From 848c82b2332d0556c22c10a9c64d1f39850271fe Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster@gmail.com>
+Date: Fri, 7 Mar 2014 20:16:52 -0500
+Subject: Add Cinnamon to list of registered environments.
+
+https://github.com/linuxmint/Cinnamon
+
+https://bugs.freedesktop.org/show_bug.cgi?id=73497
+
+diff --git a/src/validate.c b/src/validate.c
+index 77a5fda..6859c1b 100644
+--- a/src/validate.c
++++ b/src/validate.c
+@@ -363,7 +363,7 @@ static DesktopKeyDefinition registered_action_keys[] = {
+ };
+ 
+ static const char *show_in_registered[] = {
+-  "GNOME", "KDE", "LXDE", "MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "Old"
++  "Cinnamon", "GNOME", "KDE", "LXDE", "MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "Old"
+ };
+ 
+ static struct {
+-- 
+cgit v0.10.2
+
diff --git a/U_add-EDE-desktop-environment_97d6ba3.patch b/U_add-EDE-desktop-environment_97d6ba3.patch
new file mode 100644
index 0000000..b1b23c3
--- /dev/null
+++ b/U_add-EDE-desktop-environment_97d6ba3.patch
@@ -0,0 +1,23 @@
+From be0c630a19aa1788ef731def911770ce497d6ba3 Mon Sep 17 00:00:00 2001
+From: David Faure <faure@kde.org>
+Date: Tue, 1 Apr 2014 22:29:08 +0200
+Subject: Add EDE to the list of desktop environments
+
+https://bugs.freedesktop.org/show_bug.cgi?id=56353
+
+diff --git a/src/validate.c b/src/validate.c
+index 6859c1b..b4b752e 100644
+--- a/src/validate.c
++++ b/src/validate.c
+@@ -363,7 +363,7 @@ static DesktopKeyDefinition registered_action_keys[] = {
+ };
+ 
+ static const char *show_in_registered[] = {
+-  "Cinnamon", "GNOME", "KDE", "LXDE", "MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "Old"
++  "GNOME", "KDE", "LXDE", "MATE", "Razor", "ROX", "TDE", "Unity", "XFCE", "Cinnamon", "EDE", "Old"
+ };
+ 
+ static struct {
+-- 
+cgit v0.10.2
+
diff --git a/U_trailing-semicolons-are-optional_aec5711.patch b/U_trailing-semicolons-are-optional_aec5711.patch
new file mode 100644
index 0000000..ae90788
--- /dev/null
+++ b/U_trailing-semicolons-are-optional_aec5711.patch
@@ -0,0 +1,174 @@
+From 9e279cc3fac9a7e92bf426867fa83c0c7aec5711 Mon Sep 17 00:00:00 2001
+From: Jerome Leclanche <jerome@leclan.ch>
+Date: Tue, 1 Apr 2014 15:33:16 +0200
+Subject: desktop-file-validate: Trailing semicolons have been downgraded to
+ optional
+
+https://bugs.freedesktop.org/show_bug.cgi?id=76902
+Approved by David Faure and Ryan Lortie
+
+diff --git a/src/validate.c b/src/validate.c
+index 68fd6f0..77a5fda 100644
+--- a/src/validate.c
++++ b/src/validate.c
+@@ -765,9 +765,6 @@ validate_numeric_key (kf_validator *kf,
+ /* + Values of type string may contain all ASCII characters except for control
+  *   characters.
+  *   Checked.
+- * + The multiple values should be separated by a semicolon. Those keys which
+- *   have several values should have a semicolon as the trailing character.
+- *   Checked.
+  * + FIXME: how should an empty list be handled?
+  */
+ static gboolean
+@@ -799,24 +796,6 @@ validate_string_regexp_list_key (kf_validator *kf,
+     return FALSE;
+   }
+ 
+-  if (i > 0 && value[i - 1] != ';') {
+-    print_fatal (kf, "value \"%s\" for %s list key \"%s\" in group \"%s\" "
+-                     "does not have a semicolon (';') as trailing "
+-                     "character\n",
+-                     value, type, key, kf->current_group);
+-
+-    return FALSE;
+-  }
+-
+-  if (i > 1 && value[i - 1] == ';' && value[i - 2] == '\\' &&
+-      (i < 3 || value[i - 3] != '\\')) {
+-    print_fatal (kf, "value \"%s\" for %s list key \"%s\" in group \"%s\" "
+-                     "has an escaped semicolon (';') as trailing character\n",
+-                     value, type, key, kf->current_group);
+-
+-    return FALSE;
+-  }
+-
+   return TRUE;
+ }
+ 
+@@ -845,10 +824,6 @@ validate_regexp_list_key (kf_validator *kf,
+  * + If a postfixed key occurs, the same key must be also present without the
+  *   postfix.
+  *   Checked.
+- * + The multiple values should be separated by a semicolon. Those keys which
+- *   have several values should have a semicolon as the trailing character.
+- *   FIXME: partly checked. We use checks that work for sure for ascii
+- *   characters, but that could possibly fail in some weird UTF-8 strings.
+  * + FIXME: how should an empty list be handled?
+  */
+ static gboolean
+@@ -858,7 +833,6 @@ validate_localestring_list_key (kf_validator *kf,
+                                 const char   *value)
+ {
+   char     *locale_key;
+-  int       len;
+ 
+   if (locale)
+     locale_key = g_strdup_printf ("%s[%s]", key, locale);
+@@ -876,27 +850,6 @@ validate_localestring_list_key (kf_validator *kf,
+     return FALSE;
+   }
+ 
+-  len = strlen (value);
+-
+-  if (len > 0 && value[len - 1] != ';') {
+-    print_fatal (kf, "value \"%s\" for locale string list key \"%s\" in group "
+-                     "\"%s\" does not have a semicolon (';') as trailing "
+-                     "character\n",
+-                     value, locale_key, kf->current_group);
+-
+-    return FALSE;
+-  }
+-
+-  if (len > 1 && value[len - 1] == ';' && value[len - 2] == '\\' &&
+-      (len < 3 || value[len - 3] != '\\')) {
+-    print_fatal (kf, "value \"%s\" for locale string list key \"%s\" in group "
+-                     "\"%s\" has an escaped semicolon (';') as trailing "
+-                     "character\n",
+-                     value, locale_key, kf->current_group);
+-
+-    return FALSE;
+-  }
+-
+   if (!g_hash_table_lookup (kf->current_keys, key)) {
+     print_fatal (kf, "key \"%s\" in group \"%s\" is a localized key, but "
+                      "there is no non-localized key \"%s\"\n",
+@@ -3109,45 +3062,11 @@ desktop_file_validate (const char *filename,
+   return (!kf.fatal_error);
+ }
+ 
+-static void
+-fixup_list (GKeyFile    *keyfile,
+-            const gchar *filename,
+-            const gchar *key)
+-{
+-  char *value;
+-  int   len;
+-
+-  value = g_key_file_get_value (keyfile, GROUP_DESKTOP_ENTRY, key, NULL);
+-  if (!value)
+-    return;
+-
+-  len = strlen (value);
+-
+-  if (len > 0 && (value[len - 1] != ';' ||
+-                  (len > 1 && value[len - 2] == '\\' &&
+-                  (len < 3 || value[len - 3] != '\\')))) {
+-    char *str;
+-
+-    g_printerr ("%s: warning: key \"%s\" is a list and does not have a "
+-                "semicolon as trailing character, fixing\n",
+-                filename, key);
+-
+-    str = g_strconcat (value, ";", NULL);
+-    g_key_file_set_value (keyfile, GROUP_DESKTOP_ENTRY,
+-                          key, str);
+-    g_free (str);
+-  }
+-}
+-
+ /* return FALSE if we were unable to fix the file */
+ gboolean
+ desktop_file_fixup (GKeyFile   *keyfile,
+                     const char *filename)
+ {
+-  gchar        **keys;
+-  gsize          keys_nb;
+-  unsigned int   i;
+-
+   if (g_key_file_has_group (keyfile, GROUP_KDE_DESKTOP_ENTRY)) {
+     g_printerr ("%s: warning: renaming deprecated \"%s\" group to \"%s\"\n",
+                 filename, GROUP_KDE_DESKTOP_ENTRY, GROUP_DESKTOP_ENTRY);
+@@ -3155,29 +3074,5 @@ desktop_file_fixup (GKeyFile   *keyfile,
+                                GROUP_KDE_DESKTOP_ENTRY, GROUP_DESKTOP_ENTRY);
+   }
+ 
+-  keys = g_key_file_get_keys (keyfile, GROUP_DESKTOP_ENTRY, &keys_nb, NULL);
+-
+-  /* Fix lists to have a ';' at the end if they don't */
+-  for (i = 0; i < G_N_ELEMENTS (registered_desktop_keys); i++) {
+-    if (registered_desktop_keys[i].type == DESKTOP_STRING_LIST_TYPE ||
+-        registered_desktop_keys[i].type == DESKTOP_REGEXP_LIST_TYPE)
+-      fixup_list (keyfile, filename, registered_desktop_keys[i].name);
+-
+-    if (registered_desktop_keys[i].type == DESKTOP_LOCALESTRING_LIST_TYPE) {
+-      gsize keylen;
+-      guint j;
+-
+-      keylen = strlen (registered_desktop_keys[i].name);
+-      for (j = 0; j < keys_nb; j++) {
+-        if (g_str_has_prefix (keys[j], registered_desktop_keys[i].name) &&
+-            (keys[j][keylen] == '[' || keys[j][keylen] == '\0')) {
+-          fixup_list (keyfile, filename, keys[j]);
+-        }
+-      }
+-    }
+-  }
+-
+-  g_strfreev (keys);
+-
+   return TRUE;
+ }
+-- 
+cgit v0.10.2
+
diff --git a/desktop-file-utils.changes b/desktop-file-utils.changes
index 4cbafc4..e6c35d1 100644
--- a/desktop-file-utils.changes
+++ b/desktop-file-utils.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Mon Dec 15 00:09:35 UTC 2014 - stefan.bruens@rwth-aachen.de
+
+- Add U_trailing-semicolons-are-optional_aec5711.patch
+  bfo#76902, fixes a no longer correct rpmlint warning for some
+  upstream desktop files without trailing semicolon
+- Add U_add-EDE-desktop-environment_97d6ba3.patch,
+  U_add-Cinnamon-desktop-environment_50271fe.patch
+  bfo#56353, bfo#73497
+
 -------------------------------------------------------------------
 Fri Aug 30 17:55:02 UTC 2013 - hrvoje.senjan@gmail.com
 
diff --git a/desktop-file-utils.spec b/desktop-file-utils.spec
index e83cb20..6df868a 100644
--- a/desktop-file-utils.spec
+++ b/desktop-file-utils.spec
@@ -1,7 +1,7 @@
 #
 # spec file for package desktop-file-utils
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -28,6 +28,11 @@ Source1:        suse-update-mime-defaults
 Source2:        macros.desktop-file-utils
 # PATCH-FEATURE-OPENSUSE desktop-file-utils-suse-keys.patch vuntz@opensuse.org -- Handle SUSE-specific keys in validator. This is not strictly necessary, since they are prefixed with X-, but we can verify that the value has the right type.
 Patch0:         desktop-file-utils-suse-keys.patch
+# PATCH-UPSTREAM -- trailing semicolons are no longer required
+Patch1:         U_trailing-semicolons-are-optional_aec5711.patch
+# PATCH-UPSTREAM -- add Cinnamon and EDE desktop environments
+Patch2:         U_add-Cinnamon-desktop-environment_50271fe.patch
+Patch3:         U_add-EDE-desktop-environment_97d6ba3.patch
 BuildRequires:  glib2-devel
 BuildRequires:  pkg-config
 #!BuildIgnore:  dbus-1-x11
@@ -46,6 +51,9 @@ http://freedesktop.org/wiki/Specifications/desktop-entry-spec
 %prep
 %setup -q
 %patch0 -p0
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
 %configure \