launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #02972
[Merge] lp:~wgrant/launchpad/bug-715236 into lp:launchpad/db-devel
William Grant has proposed merging lp:~wgrant/launchpad/bug-715236 into lp:launchpad/db-devel.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
Related bugs:
Bug #715236 in Launchpad itself: "Validate architecturetag"
https://bugs.launchpad.net/launchpad/+bug/715236
For more details, see:
https://code.launchpad.net/~wgrant/launchpad/bug-715236/+merge/53576
DistroArchSeries.architecturetag is used in URLs and passed into external tools, for both of which some characters (eg. spaces) are dangerous. Yet it is an unconstrained line of text. This branch applies valid_name to it at the DB and form level.
valid_name probably isn't quite correct, but it fits all the valid archtags (try 'dpkg-architecture -L'), and Debian Policy does not specify a better constraint.
--
https://code.launchpad.net/~wgrant/launchpad/bug-715236/+merge/53576
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~wgrant/launchpad/bug-715236 into lp:launchpad/db-devel.
=== added file 'database/schema/patch-2208-99-0.sql'
--- database/schema/patch-2208-99-0.sql 1970-01-01 00:00:00 +0000
+++ database/schema/patch-2208-99-0.sql 2011-03-16 08:06:07 +0000
@@ -0,0 +1,6 @@
+SET client_min_messages=ERROR;
+
+ALTER TABLE distroarchseries
+ ADD CONSTRAINT valid_architecturetag CHECK (valid_name(architecturetag));
+
+INSERT INTO LaunchpadDatabaseRevision VALUES (2208, 99, 0);
=== modified file 'lib/lp/soyuz/interfaces/distroarchseries.py'
--- lib/lp/soyuz/interfaces/distroarchseries.py 2010-10-06 11:46:51 +0000
+++ lib/lp/soyuz/interfaces/distroarchseries.py 2011-03-16 08:06:07 +0000
@@ -30,6 +30,7 @@
)
from canonical.launchpad import _
+from lp.app.validators.name import name_validator
from lp.registry.interfaces.distroseries import IDistroSeries
from lp.registry.interfaces.person import IPerson
from lp.registry.interfaces.role import IHasOwner
@@ -56,7 +57,8 @@
"identifies this architecture. All binary packages in the "
"archive will use this tag in their filename. Please get it "
"correct. It should really never be changed!"),
- required=True),
+ required=True,
+ constraint=name_validator),
exported_as="architecture_tag")
official = exported(
Bool(
=== modified file 'lib/lp/soyuz/stories/distroseries/add-architecture.txt'
--- lib/lp/soyuz/stories/distroseries/add-architecture.txt 2009-11-09 17:08:21 +0000
+++ lib/lp/soyuz/stories/distroseries/add-architecture.txt 2011-03-16 08:06:07 +0000
@@ -27,6 +27,16 @@
>>> print admin_browser.title
ia64 : Hoary (5.04) : Ubuntu
+Architecture tag is restricted to the usual Launchpad name format.
+
+ >>> admin_browser.open('http://launchpad.dev/ubuntu/hoary')
+ >>> admin_browser.getLink('Add architecture').click()
+ >>> admin_browser.getControl('Architecture Tag').value = 'foo bar'
+ >>> admin_browser.getControl('Continue').click()
+ >>> print "\n".join(get_feedback_messages(admin_browser.contents))
+ There is 1 error.
+ Invalid name 'foo bar'. ...
+
Other users won't see the link nor the page where a new port can be
registered.
Follow ups