Merge lp:~cjwatson/click-apparmor/unicode-manifest into lp:click-apparmor

Proposed by Colin Watson
Status: Merged
Merged at revision: 91
Proposed branch: lp:~cjwatson/click-apparmor/unicode-manifest
Merge into: lp:click-apparmor
Diff against target: 111 lines (+21/-12)
3 files modified
apparmor/click.py (+2/-2)
debian/changelog (+6/-0)
test-clicktool.py (+13/-10)
To merge this branch: bzr merge lp:~cjwatson/click-apparmor/unicode-manifest
Reviewer Review Type Date Requested Status
Ubuntu Security Team Pending
Review via email: mp+192951@code.launchpad.net

Description of the change

Treat manifests as UTF-8, even in non-UTF-8 locales such as those in use when running under PackageKit.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'apparmor/click.py'
--- apparmor/click.py 2013-09-23 23:17:28 +0000
+++ apparmor/click.py 2013-10-28 21:18:44 +0000
@@ -263,7 +263,7 @@
263263
264def read_click_manifest(manifest):264def read_click_manifest(manifest):
265 '''Read click manifest'''265 '''Read click manifest'''
266 f = open(manifest, "r")266 f = open(manifest, "r", encoding="UTF-8")
267 j = json.load(f)267 j = json.load(f)
268 for field in required_click_fields:268 for field in required_click_fields:
269 if not field in j:269 if not field in j:
@@ -274,7 +274,7 @@
274274
275def read_apparmor_manifest(manifest, app):275def read_apparmor_manifest(manifest, app):
276 '''Read AppArmor manifest from click package'''276 '''Read AppArmor manifest from click package'''
277 f = open(manifest, "r")277 f = open(manifest, "r", encoding="UTF-8")
278 j = json.load(f)278 j = json.load(f)
279 if (len(j.keys()) == 1) and app in j:279 if (len(j.keys()) == 1) and app in j:
280 j = j[app]280 j = j[app]
281281
=== modified file 'debian/changelog'
--- debian/changelog 2013-10-28 21:12:25 +0000
+++ debian/changelog 2013-10-28 21:18:44 +0000
@@ -1,3 +1,9 @@
1click-apparmor (0.1.12) UNRELEASED; urgency=low
2
3 * Treat manifests as UTF-8, even in non-UTF-8 locales (LP: #1245677).
4
5 -- Colin Watson <cjwatson@ubuntu.com> Mon, 28 Oct 2013 14:14:23 -0700
6
1click-apparmor (0.1.11) saucy; urgency=low7click-apparmor (0.1.11) saucy; urgency=low
28
3 * don't traceback on os.remove (LP: #1234908)9 * don't traceback on os.remove (LP: #1234908)
410
=== modified file 'test-clicktool.py'
--- test-clicktool.py 2013-09-04 22:48:25 +0000
+++ test-clicktool.py 2013-10-28 21:18:44 +0000
@@ -1,4 +1,5 @@
1#!/usr/bin/python31#!/usr/bin/python3
2# -*- coding: UTF-8 -*-
23
3# ------------------------------------------------------------------4# ------------------------------------------------------------------
4#5#
@@ -11,7 +12,7 @@
11# ------------------------------------------------------------------12# ------------------------------------------------------------------
1213
13# not needed for python3, but pyflakes is grumpy without it14# not needed for python3, but pyflakes is grumpy without it
14from __future__ import print_function15from __future__ import print_function, unicode_literals
1516
16from apparmor import click17from apparmor import click
17from apparmor.click import AppName18from apparmor.click import AppName
@@ -43,15 +44,16 @@
43 j['version'] = version44 j['version'] = version
44 j['hooks'] = dict()45 j['hooks'] = dict()
45 j['title'] = "Some silly demo app called %s" % (name)46 j['title'] = "Some silly demo app called %s" % (name)
46 j['maintainer'] = 'Buggy McJerkerson <buggy@bad.soft.warez>'47 j['maintainer'] = 'Büggy McJerkerson <buggy@bad.soft.warez>'
47 return j48 return j
4849
49 def _add_app_to_json(self, app):50 def _add_app_to_json(self, app):
50 j = self.manifest_json51 j = self.manifest_json
51 j['hooks'][app] = dict()52 j['hooks'][app] = dict()
52 j['hooks'][app]['apparmor'] = "apparmor/%s.json" % (app)53 j['hooks'][app]['apparmor'] = "apparmor/%s.json" % (app)
53 with open(self.click_manifest, "w") as f:54 with open(self.click_manifest, "w", encoding="UTF-8") as f:
54 json.dump(j, f, indent=2, separators=(',', ': '), sort_keys=True)55 json.dump(j, f, indent=2, separators=(',', ': '), sort_keys=True,
56 ensure_ascii=False)
5557
56 def add_package(self, name, version, framework=None):58 def add_package(self, name, version, framework=None):
57 self.package = name59 self.package = name
@@ -65,9 +67,9 @@
65 self.manifest_json['framework'] = framework67 self.manifest_json['framework'] = framework
66 self.click_manifest = os.path.join(self.click_pkgdir, "%s.manifest" %68 self.click_manifest = os.path.join(self.click_pkgdir, "%s.manifest" %
67 (name))69 (name))
68 with open(self.click_manifest, "w+") as f:70 with open(self.click_manifest, "w+", encoding="UTF-8") as f:
69 json.dump(self.manifest_json, f, indent=2, separators=(',', ': '),71 json.dump(self.manifest_json, f, indent=2, separators=(',', ': '),
70 sort_keys=True)72 sort_keys=True, ensure_ascii=False)
7173
72 def add_app(self, appname, manifest=None):74 def add_app(self, appname, manifest=None):
73 os.mkdir(os.path.join(self.click_pkgdir, "apparmor"))75 os.mkdir(os.path.join(self.click_pkgdir, "apparmor"))
@@ -75,7 +77,7 @@
75 (appname))77 (appname))
76 self._add_app_to_json(appname)78 self._add_app_to_json(appname)
7779
78 with open(aa_json, "w+") as f:80 with open(aa_json, "w+", encoding="UTF-8") as f:
79 if manifest:81 if manifest:
80 f.write(manifest)82 f.write(manifest)
81 os.symlink(aa_json, os.path.join(self.click_dir,83 os.symlink(aa_json, os.path.join(self.click_dir,
@@ -260,11 +262,12 @@
260 j['version'] = "0.1"262 j['version'] = "0.1"
261 j['hooks'] = dict()263 j['hooks'] = dict()
262 j['title'] = "Some silly demo app"264 j['title'] = "Some silly demo app"
263 j['maintainer'] = 'Buggy McJerkerson <buggy@bad.soft.warez>'265 j['maintainer'] = 'Büggy McJerkerson <buggy@bad.soft.warez>'
264266
265 self.click_manifest = os.path.join(self.tmpdir, "test-app.manifest")267 self.click_manifest = os.path.join(self.tmpdir, "test-app.manifest")
266 with open(self.click_manifest, "w+") as f:268 with open(self.click_manifest, "w+", encoding="UTF-8") as f:
267 json.dump(j, f, indent=2, separators=(',', ': '), sort_keys=True)269 json.dump(j, f, indent=2, separators=(',', ': '), sort_keys=True,
270 ensure_ascii=False)
268 try:271 try:
269 apparmor.click.read_click_manifest(self.click_manifest)272 apparmor.click.read_click_manifest(self.click_manifest)
270 except click.AppArmorException:273 except click.AppArmorException:

Subscribers

People subscribed via source and target branches

to all changes: