[rygel/wip/didl-s: 21/25] renderer: Fix triple-escaping



commit 661e44d4a8bb648f91cdf3d2bcc62ac9d89ab1de
Author: Jens Georg <jensg openismus com>
Date:   Tue Nov 20 16:26:18 2012 +0100

    renderer: Fix triple-escaping

 src/librygel-renderer/rygel-av-transport.vala |   35 +++++++++++++++----------
 1 files changed, 21 insertions(+), 14 deletions(-)
---
diff --git a/src/librygel-renderer/rygel-av-transport.vala b/src/librygel-renderer/rygel-av-transport.vala
index 06029b5..79d7214 100644
--- a/src/librygel-renderer/rygel-av-transport.vala
+++ b/src/librygel-renderer/rygel-av-transport.vala
@@ -68,35 +68,39 @@ internal class Rygel.AVTransport : Service {
     public string metadata {
         owned get {
             if (this._metadata != null) {
-                if (this._metadata.has_prefix ("&lt;")) {
-                    return this._metadata;
-                }
-                return Markup.escape_text (this._metadata);
+                return this._metadata;
             } else {
                 return "";
             }
         }
 
         set {
-            this._metadata = value;
+            var v = value.replace ("&quot;", "\"");
+            v = v.replace ("&lt;", "<");
+            v = v.replace ("&gt;", ">");
+            v = v.replace ("&apos;", "'");
+            v = v.replace ("&amp;", "&");
+
+            this._metadata = v;
         }
     }
 
     public string track_metadata {
         owned get {
             if (this.player.metadata != null) {
-                if (this.player.metadata.has_prefix ("&lt;")) {
-                    return this.player.metadata;
-                }
-
-                return Markup.escape_text (this.player.metadata);
+                return this.player.metadata;
             } else {
                 return "";
             }
         }
 
         set {
-            this.player.metadata = value;
+            var v = value.replace ("&quot;", "\"");
+            v = v.replace ("&lt;", "<");
+            v = v.replace ("&gt;", ">");
+            v = v.replace ("&apos;", "'");
+            v = v.replace ("&amp;", "&");
+            this.player.metadata = v;
         }
     }
 
@@ -232,8 +236,10 @@ internal class Rygel.AVTransport : Service {
         log.log ("CurrentTrack",                 this.track.to_string ());
         log.log ("CurrentTrackDuration",         this.player.duration_as_str);
         log.log ("CurrentMediaDuration",         this.player.duration_as_str);
-        log.log ("CurrentTrackMetaData",         this.track_metadata);
-        log.log ("AVTransportURIMetaData",       this.metadata);
+        log.log ("CurrentTrackMetaData",
+                 Markup.escape_text (this.track_metadata));
+        log.log ("AVTransportURIMetaData",
+                 Markup.escape_text (this.metadata));
         log.log ("CurrentTrackURI",              this.track_uri);
         log.log ("AVTransportURI",               this.uri);
         log.log ("NextAVTransportURI",           "NOT_IMPLEMENTED");
@@ -686,7 +692,8 @@ internal class Rygel.AVTransport : Service {
 
     private void notify_meta_data_cb (Object player, ParamSpec p) {
         this._metadata = this.player.metadata;
-        this.changelog.log ("CurrentTrackMetadata", this.metadata);
+        this.changelog.log ("CurrentTrackMetadata",
+                            Markup.escape_text (this.metadata));
     }
 
     private async void handle_playlist (ServiceAction action) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]