]> git.etc.gen.nz Git - mythtv-status.git/commitdiff
Clean out the bad UTF-8 characters.
authorAndrew Ruthven <andrew@etc.gen.nz>
Thu, 29 Nov 2007 17:46:57 +0000 (06:46 +1300)
committerAndrew Ruthven <puck@dirk.wgtn.cat-it.co.nz>
Thu, 29 Nov 2007 20:53:08 +0000 (09:53 +1300)
ChangeLog
bin/mythtv-status

index d521ac6169e011215f5be8200018e494c23e0c65..b7713e7177689f21f984b0c013410f73a8387b14 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2007-11-28     Andrew Ruthven
        Be more wary about processing what the backend has sent us.
+               This includes cleaning up some invalid UTF-8 characters.
        Add support for reading XML from a file.
        Be a bit more forgiving on the XML we're receiving.
 
index 6d533b9852530dd10adc735cd0cfeae3ba5b156c..13090a1b1702ab9cbb8f7b2e697c032cc7608b60 100755 (executable)
@@ -305,6 +305,8 @@ sub load_xml {
   $parser->recover_silently(1)
     unless $verbose;
 
+  clean_xml(\$status);
+
   my $xml = eval { $parser->parse_string( $status ) };
 
   if ($@) {
@@ -327,6 +329,20 @@ sub load_perl_api {
   return $myth;
 }
 
+# We are sometimes passed dodgy XML from MythTV, make some attempts to clean
+# it.
+sub clean_xml {
+  my ($xml) = shift;
+
+  # Deal to invalid Unicode.
+  for my $bad ("&#xdbff;", "&#xdee9;") {
+    if ($$xml =~ s/$bad/?/g) {
+      warn "Found and replaced: $bad\n"
+        if $verbose;
+    }
+  }
+}
+
 sub process_xml {
   my ($block, $xml) = @_;