From: Georg Brandl Date: Sun, 12 Apr 2009 17:26:19 +0000 (+0000) Subject: Merged revisions 71537 via svnmerge from X-Git-Tag: v2.6.2~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dcfed0e316243b2635ccfee3553eb5eacd3d2135;p=python Merged revisions 71537 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r71537 | georg.brandl | 2009-04-12 19:24:11 +0200 (So, 12 Apr 2009) | 1 line #5741: dont disallow double percent signs in SafeConfigParser.set() keys. ........ --- diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py index b6af6f9bab..aa4f196fa4 100644 --- a/Lib/ConfigParser.py +++ b/Lib/ConfigParser.py @@ -614,7 +614,6 @@ class SafeConfigParser(ConfigParser): return ''.join(L) _interpvar_re = re.compile(r"%\(([^)]+)\)s") - _badpercent_re = re.compile(r"%[^%]|%$") def _interpolate_some(self, option, accum, rest, section, map, depth): if depth > MAX_INTERPOLATION_DEPTH: @@ -661,9 +660,10 @@ class SafeConfigParser(ConfigParser): # check for bad percent signs: # first, replace all "good" interpolations tmp_value = self._interpvar_re.sub('', value) + tmp_value = tmp_value.replace('%%', '') # then, check if there's a lone percent sign left - m = self._badpercent_re.search(tmp_value) - if m: + percent_index = tmp_value.find('%') + if percent_index != -1: raise ValueError("invalid interpolation syntax in %r at " - "position %d" % (value, m.start())) + "position %d" % (value, percent_index)) ConfigParser.set(self, section, option, value) diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py index a8b5d7c389..173f40fa06 100644 --- a/Lib/test/test_cfgparser.py +++ b/Lib/test/test_cfgparser.py @@ -434,6 +434,10 @@ class SafeConfigParserTestCase(ConfigParserTestCase): self.assertEqual(cf.get('sect', "option1"), "foo") + # bug #5741: double percents are *not* malformed + cf.set("sect", "option2", "foo%%bar") + self.assertEqual(cf.get("sect", "option2"), "foo%bar") + def test_set_nonstring_types(self): cf = self.fromstring("[sect]\n" "option1=foo\n") diff --git a/Misc/NEWS b/Misc/NEWS index dc88679d26..35d4122a94 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -103,6 +103,9 @@ Core and Builtins Library ------- +- Issue #5741: don't disallow "%%" (which is an escape for "%") when setting + a value in SafeConfigParser. + - Issue #5731: Distutils bdist_wininst no longer worked on non-Windows platforms. Initial patch by Paul Moore.