From: smlee Date: Tue, 6 Jan 2015 07:36:57 +0000 (+0900) Subject: [hbbtv] fix crash parsing xml. X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=157b03b04683b9a68d97ff431262ebe954e81e19 [hbbtv] fix crash parsing xml. fix keymap bug. --- diff --git a/lib/python/Plugins/Extensions/HbbTV/aitreader.py b/lib/python/Plugins/Extensions/HbbTV/aitreader.py index 757b0f3..dda39dc 100644 --- a/lib/python/Plugins/Extensions/HbbTV/aitreader.py +++ b/lib/python/Plugins/Extensions/HbbTV/aitreader.py @@ -1,8 +1,15 @@ -import os, xml.dom.minidom +import os, xml.dom.minidom, re from enigma import iServiceInformation import vbcfg +RE_XML_ILLEGAL = u'([\u0000-\u0008\u000b-\u000c\u000e-\u001f\ufffe-\uffff])' + \ + u'|' + \ + u'([%s-%s][^%s-%s])|([^%s-%s][%s-%s])|([%s-%s]$)|(^[%s-%s])' % \ + (unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), + unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), + unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff)) + DUMPBIN = vbcfg.PLUGINROOT + "/dumpait" class eAITSectionReader: def __init__(self, demux, pmtid, sid): @@ -72,7 +79,10 @@ class eAITSectionReader: return False if len(document) == 0: return False + document = re.sub(RE_XML_ILLEGAL, "?", document) + document = re.sub("&", "+", document) document = document.decode("cp1252").encode("utf-8") + document = "" + document + "" try: self.mDocument = xml.dom.minidom.parseString(document) except Exception, ErrMsg: @@ -99,4 +109,3 @@ def unit_test(demux, pmtid, sid): vbcfg.ERR("no data!!") #unit_test('0', 0x17d4, 0x2b66) - diff --git a/lib/python/Plugins/Extensions/HbbTV/browser.py b/lib/python/Plugins/Extensions/HbbTV/browser.py index 73af39e..e7e7386 100644 --- a/lib/python/Plugins/Extensions/HbbTV/browser.py +++ b/lib/python/Plugins/Extensions/HbbTV/browser.py @@ -296,9 +296,8 @@ class BrowserPreferenceWindow(ConfigListScreen, Screen): mode = 1 self._keymapType = self.menuItemKeyboardLayout.value BrowserSetting().setData(url, mode, self._keymapType) - # send contorller - #command_util = getCommandUtil() - #command_util.sendCommand('OP_BROWSER_NEED_RELOAD_KEYMAP') + + VBController.command('CONTROL_RELOAD_KEYMAP') self.close() def keyRed(self): diff --git a/lib/python/Plugins/Extensions/HbbTV/plugin.py b/lib/python/Plugins/Extensions/HbbTV/plugin.py index 22d5f69..1dd214c 100644 --- a/lib/python/Plugins/Extensions/HbbTV/plugin.py +++ b/lib/python/Plugins/Extensions/HbbTV/plugin.py @@ -53,6 +53,7 @@ _OPCODE_LIST = [ 'OOIF_BROADCAST_PLAY', 'OOIF_BROADCAST_STOP', 'OOIF_BROADCAST_CHECK', + 'CONTROL_RELOAD_KEYMAP', 'OPCODE_END' ]