From c428b52fd33a231aac0959279c07a1188576bfd3 Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Thu, 16 Feb 2012 12:49:54 -0500 Subject: [PATCH] Escape content when generating DTD for fieldmapper Noticed by Thomas Berezansky, if a translation in a PO or POT file contains an unescaped left angle bracket, a DTD will be generated that contains the unescaped left angle bracket - and that isn't valid. Signed-off-by: Dan Scott Signed-off-by: Thomas Berezansky --- build/i18n/scripts/fieldmapper.py | 9 +++++---- build/i18n/tests/data/testidl.ent | 4 ++-- build/i18n/tests/data/testidl.po | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build/i18n/scripts/fieldmapper.py b/build/i18n/scripts/fieldmapper.py index 385fce5182..51e5ba560f 100755 --- a/build/i18n/scripts/fieldmapper.py +++ b/build/i18n/scripts/fieldmapper.py @@ -24,6 +24,7 @@ import polib import sys import xml.sax import xml.sax.handler +import xml.sax.saxutils class IDL(basel10n.BaseL10N): """ @@ -64,14 +65,14 @@ class IDL(basel10n.BaseL10N): """ Creates an entity definition file based on a translated PO file. """ - entity = '' + entity = '' for entry in self.pot: for name in entry.occurrences: + entdef = xml.sax.saxutils.quoteattr(entry.msgstr) if entry.msgstr == '': # No translation available; use the en-US definition - self.definitions.append(entity % (name[0], entry.msgid)) - else: - self.definitions.append(entity % (name[0], entry.msgstr)) + entdef = xml.sax.saxutils.quoteattr(entry.msgid) + self.definitions.append(entity % (name[0], entdef)) class IDLHandler(xml.sax.handler.ContentHandler): """ diff --git a/build/i18n/tests/data/testidl.ent b/build/i18n/tests/data/testidl.ent index d1cfb57acd..effd5c5316 100644 --- a/build/i18n/tests/data/testidl.ent +++ b/build/i18n/tests/data/testidl.ent @@ -11,7 +11,7 @@ - + @@ -37,6 +37,6 @@ - + diff --git a/build/i18n/tests/data/testidl.po b/build/i18n/tests/data/testidl.po index 744cff41f6..ec4605bfa1 100644 --- a/build/i18n/tests/data/testidl.po +++ b/build/i18n/tests/data/testidl.po @@ -65,7 +65,7 @@ msgstr "neque dolor a nulla" #: field.auoi.id.label:25 msgid "Opt-in ID" -msgstr "Phasellus aliquam vulputate justo" +msgstr "Phasellus \" aliquam vulputate justo" #: field.rodcirc.payment_total.label:86 msgid "Payment Totals" @@ -165,7 +165,7 @@ msgstr "ut ullamcorper faucibus" #: field.rodcirc.renewal_remaining.label:74 msgid "Remaining Renewals" -msgstr "diam felis" +msgstr "diam felis<" #: field.aws.owning_lib.label:46 msgid "Owning Library" -- 2.43.2