From bc7b5b05a7794ed2560877e84276012c25425291 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 30 Apr 2019 08:48:13 +0530 Subject: [PATCH] LRF Input: Fix a regression that broke parsing LRF files. Fixes #1826970 [lrf format is not supported in any way](https://bugs.launchpad.net/calibre/+bug/1826970) --- src/calibre/ebooks/lrf/meta.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/calibre/ebooks/lrf/meta.py b/src/calibre/ebooks/lrf/meta.py index 6ebb8deb04..c0a16e5efa 100644 --- a/src/calibre/ebooks/lrf/meta.py +++ b/src/calibre/ebooks/lrf/meta.py @@ -18,6 +18,7 @@ from shutil import copyfileobj import xml.dom.minidom as dom from functools import wraps +from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.metadata import MetaInformation, string_to_authors from polyglot.builtins import unicode_type @@ -394,14 +395,9 @@ class LRFMetaFile(object): if len(src) != self.uncompressed_info_size: raise LRFException("Decompression of document meta info\ yielded unexpected results") - try: - return dom.parseString(src) - except: - try: - return dom.parseString(src.replace('\x00', '').strip()) - except: - src = src.replace('\x00', '').strip().decode('latin1') - return dom.parseString(src.encode('utf-8')) + + src = xml_to_unicode(src, strip_encoding_pats=True, resolve_entities=True, assume_utf8=True)[0] + return dom.parseString(src) except zlib.error: raise LRFException("Unable to decompress document meta information")